Símbolos ps 1s. Nuevas funciones para trabajar con cadenas. Funciones para trabajar con cadenas StrDivide(), StrConnect()

Una cadena es uno de los tipos de datos primitivos en los sistemas 1C:Enterprise 8 Variables con el tipo. línea contener texto.

Escriba valores de variables línea consiste en doble comillas. Múltiples variables de este tipo se puede plegar.

Per1 = "Palabra 1";
Per2 = "Palabra 2";
Por3 = Por1 + " " + Por2;

Eventualmente por3 Significará " Palabra 1 Palabra 2”.

Además, los sistemas 1C:Enterprise 8 proporcionan funciones para trabajar con cadenas. Veamos los principales:

Ingresar cadena (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — la función está diseñada para mostrar un cuadro de diálogo en el que el usuario puede especificar un valor tipo de variable Línea. Parámetro <Строка> es obligatorio y contiene el nombre de la variable en la que se escribirá la cadena ingresada. Parámetro <Подсказка> opcional: este es el título del cuadro de diálogo. Parámetro <Длина> Opcional, muestra la longitud máxima de la cadena de entrada. El valor predeterminado es cero, lo que significa longitud ilimitada. Parámetro <Многострочность> opcional. Define el modo de entrada de texto multilínea: Verdadero: entrada de texto multilínea con separadores de línea; Falso: ingrese una cadena simple.

Puede ingresar una cadena si conoce el código de carácter en Unicode:

Símbolo(<КодСимвола>) — el código se ingresa como un número.

Letra= Símbolo(1103); // I

También hay una función inversa que le permite averiguar el código de un símbolo.

Código de símbolo (<Строка>, <НомерСимвола>) — devuelve el número Unicode del carácter especificado como un número.

Funciones de conversión de mayúsculas y minúsculas:

VReg(<Строка>) — Convierte todos los caracteres de una cadena a mayúsculas.

NReg(<Строка>) — Convierte todos los caracteres de una cadena a minúsculas.

TReg(<Строка>) — convierte todos los caracteres de la cadena a mayúsculas y minúsculas. Es decir, las primeras letras de todas las palabras se convierten a mayúsculas y las letras restantes se convierten a minúsculas.

Funciones para buscar y reemplazar caracteres en una cadena:

Encontrar(<Строка>, <ПодстрокаПоиска>) — busca el número de carácter de la aparición de la subcadena de búsqueda. Por ejemplo:

Buscar ("Cadena", "oka"); // 4

StrBuscar(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — busca el número de carácter de la aparición de la subcadena de búsqueda, el número de aparición se indica en el parámetro correspondiente. En este caso, la búsqueda comienza con el carácter cuyo número se especifica en el parámetro Posición inicial. La búsqueda es posible desde el principio o el final de la cadena. Por ejemplo:

Número4 Ocurrencias = Str Buscar ( "Defensividad", "acerca de", Dirección de búsqueda. Desde el inicio, 1, 4); // 7

StrReemplazar(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – busca todas las apariciones de la subcadena de búsqueda en la cadena de origen y la reemplaza con la subcadena de reemplazo.

StrReplace ("Cadena", "oka", ""); // Página

Línea vacía (<Строка>) – comprueba la cadena en busca de caracteres significativos. Si no hay caracteres significativos, o no hay ningún carácter, se devuelve el valor Verdadero. De lo contrario - Mentir.

StrNumberOcurrencias(<Строка>, <ПодстрокаПоиска>) – Calcula el número de apariciones de la subcadena de búsqueda en la cadena de origen.

StrNumberOcurrencias ( "Estudiar, estudiar y volver a estudiar", "estudiar" , "" ) ; // 3

PlantillaStr(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — sustituye parámetros en una cadena por número. La línea debe contener marcadores de sustitución del formato: “%1..%N”. La numeración de los marcadores comienza desde 1. Si el valor del parámetro Indefinido, se sustituye una cadena vacía.

PlantillaStr ( "Parámetro 1 = %1, Parámetro 2 = %2", "1" , "2" ) ; // Parámetro 1= 1, Parámetro 2 = 2

Funciones de conversión de cadenas:

Un leon(<Строка>, <ЧислоСимволов>) – devuelve los primeros caracteres de una cadena.

Bien(<Строка>, <ЧислоСимволов>) – devuelve los últimos caracteres de una cadena.

Miércoles(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – devuelve una cadena de longitud<ЧислоСимволов>, empezando por el símbolo<НачальныйНомер>.

AbrL(<Строка>) recorta los caracteres no significativos a la izquierda del primer carácter significativo de la cadena.

Abr(<Строка>) — corta los caracteres insignificantes a la derecha del último carácter significativo de la línea.

AbbrLP(<Строка>) – corta los caracteres insignificantes a la izquierda del primer carácter significativo de la línea y a la derecha del último carácter significativo de la línea.

StrGetString(<Строка>, <НомерСтроки>) – Obtiene una cadena multilínea por número.

Otras características:

Longitud de cadena (<Строка>) – devuelve el número de caracteres de la cadena.

StrNumberRow(<Строка>) – devuelve el número de líneas en una cadena de varias líneas. Una línea se considera nueva si está separada de la anterior por un carácter de nueva línea.

StrComparar(<Строка1>, <Строка2> ) – compara dos cadenas sin distinguir entre mayúsculas y minúsculas. Una función funciona de manera similar a un objeto. Comparación de valores. Devoluciones:

  • 1 - si la primera línea es mayor que la segunda
  • -1 - si la segunda línea es mayor que la primera
  • 0 - si las cadenas son iguales

StrCompare("Primera línea", "Segunda línea"); // 1

La información en 1C se puede presentar: un directorio, un documento, un registro...

Sin embargo, en última instancia, todos estos objetos constan de campos, y los campos son de tipos simples: número, cadena, fecha. Y siempre hay más información en forma de cadenas. Por lo tanto, hay que trabajar con cuerdas con más frecuencia.

Ahora veremos cómo se puede trabajar con cadenas del lenguaje 1C. Al mismo tiempo, probaremos varias opciones para el análisis automático de texto.

tipos de cuerdas

Las líneas pueden tener una longitud limitada o ilimitada. Si el valor de la cadena se toma de un atributo, entonces esta restricción se indica en el tipo de atributo.

Si el usuario ingresó una línea en el formulario, entonces el elemento del formulario puede tener las casillas de verificación "Modo multilínea" y "Edición avanzada". El primero significa que la línea puede contener caracteres de “salto de línea 1C (Intro)”. La segunda es que la línea puede contener otros símbolos del servicio 1C, por ejemplo TAB.

Si se toma una línea de un archivo, por ejemplo usando ReadText(), entonces la codificación también se vuelve importante: al leer un archivo, debe especificar la codificación (UTF-8, KOI8, etc.).

Símbolos de servicio 1C

Para trabajar con caracteres especiales, se utiliza la enumeración Símbolos 1C.

Por ejemplo, un valor de cadena que consta de dos palabras:
TextString = "Primera línea" + Símbolos.PS + "Segunda línea";

Por ejemplo, buscando un salto de línea 1C en el texto:
Posición = Buscar (Cadena de texto, Caracteres.PS);

Puede trabajar con los siguientes caracteres especiales:

  • CR y LF
    Se refieren a un salto de línea 1C. A menudo se encuentra en archivos de texto.
    El código de carácter en ASCII es 0x0D y 0x0A, en Unicode: U+000D y U+000A.

    En el idioma 1C se parecen a Symbols.CR y Symbols.LF, o en ruso a Symbols.VK y Symbols.PS. Para transferir una línea 1C al crearla en código 1C, basta con usar PS.

Otros símbolos 1C

Las cadenas en 1C se utilizan "físicamente" en el formato Unicode (Unicode, http://ru.wikipedia.org/wiki/%DE%ED%E8%EA%EE%E4).

Si no se ha encontrado con la "codificación" de caracteres antes, observemos brevemente:

  • Cuando trabaja con cadenas, la computadora usa números de letras, no las letras mismas.
  • Dado que hay muchos alfabetos "humanos" (inglés, ruso, griego, chino, etc., y también hay símbolos 1C de servicio y "no imprimibles"), existen varias opciones para los alfabetos informáticos, una de las cuales es Unicode, que incluye símbolos 1C todos los idiomas
  • El alfabeto Unicode se parece a esto:
    o Símbolos de servicio 1C comunes “no imprimibles”
    o Signos perjudiciales y matemáticas.
    o Números
    o alfabeto ingles
    o Añadir. Caracteres 1C del alfabeto inglés, que se utilizan en idiomas europeos (por ejemplo, alemán)
    o alfabeto griego
    o alfabeto ruso
    o...

Si es necesario, en las líneas 1C es posible utilizar todos los caracteres 1C disponibles en Unicode.

En primer lugar, puedes escribirlos desde el teclado si tienes una distribución de teclado instalada en Windows (el valor predeterminado en Rusia suele ser inglés y ruso).

En segundo lugar, puedes marcar utilizando la siguiente técnica:

En tercer lugar, puedes trabajar desde el código del programa. La función Símbolo(Número) devuelve el símbolo con número especificado y la función CharacterCode(String) devuelve el número de carácter de la primera letra de la cadena. Si necesita otra letra en la línea, entonces CharacterCode(String, LetterNumber).

Por ejemplo, agregue el carácter Ž a la siguiente línea:
TextString = "Buena cerveza en la ciudad" + Character(381) + "drobinek";
//Resultado: "Buena cerveza en Ždrobinek"

Implementado en la versión 8.3.6.1977.

Hemos ampliado el conjunto de funciones diseñadas para trabajar con cadenas. Hicimos esto para brindarle herramientas más avanzadas para analizar datos de cadenas. Las nuevas funciones serán convenientes y útiles en tareas tecnológicas de análisis de texto. En tareas relacionadas con el análisis de texto que contiene datos en formato formateado. Esto podría ser un análisis de algunos archivos recibidos del equipo, o, por ejemplo, un análisis revista de tecnología.

Podrías realizar todas las acciones que realizan nuevas funciones antes. Utilizando algoritmos más o menos complejos escritos en un lenguaje integrado. Por lo tanto, las nuevas funciones no ofrecen capacidades fundamentalmente nuevas. Sin embargo, le permiten reducir la cantidad de código y hacerlo más simple y comprensible. Además, te permiten acelerar la ejecución de acciones. Porque las funciones implementadas en la plataforma funcionan, por supuesto, más rápido que un algoritmo similar escrito en un lenguaje integrado.

Función de formato StrTemplate()

Esta función sustituye parámetros en una cadena. La necesidad de realizar esta conversión surge a menudo, por ejemplo, al mostrar mensajes de advertencia. La sintaxis de esta función es la siguiente:

PlantillaStr(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- esta es la cadena en la que necesitas sustituir las representaciones de parámetros.

<Значение1> , ... <Значение10>- estos son parámetros (máximo diez), cuyas representaciones deben sustituirse en la cadena.

Para indicar un lugar específico en la plantilla donde desea realizar la sustitución, debe usar marcadores como %1, ... %10. La cantidad de marcadores involucrados en la plantilla y la cantidad de parámetros que contienen valores deben coincidir.

Por ejemplo, el resultado de ejecutar dicho operador:

habrá una línea:

Error de datos en la línea 2 (tipo de fecha requerida)

Función para trabajar con cadenas StrCompare()

Esta función compara dos cadenas sin distinguir entre mayúsculas y minúsculas. Por ejemplo, así:

Podrías realizar la misma acción antes usando el objeto Comparación de valores:

Sin embargo, usar la nueva función parece más fácil. Y además de esto, la función, a diferencia del objeto Comparación de valores, también funciona en cliente ligero y en el cliente web.

Funciones para trabajar con cadenas StrStartsWith(), StrEndsAt()

Estas funciones determinan si una cadena comienza con una subcadena específica o si una cadena termina con una subcadena específica. El algoritmo para estas funciones no es difícil de implementar en un lenguaje integrado, pero su presencia permite escribir código más limpio y comprensible. Y trabajan más rápido.

Por ejemplo, son convenientes de usar en la declaración If:

Funciones para trabajar con cadenas StrDivide(), StrConnect()

Estas funciones dividen una cadena en partes usando un delimitador específico. O viceversa, combinan varias líneas en una, insertando entre ellas el separador seleccionado. Son convenientes para crear o analizar registros y revistas tecnológicas. Por ejemplo, puede analizar fácilmente una entrada de registro tecnológico en partes adecuadas para un análisis posterior:

Función para trabajar con cadenas StrFind()

En lugar de la antigua función Find(), implementamos nueva caracteristica, que tiene características adicionales:

  • Buscar en diferentes direcciones (desde el principio, desde el final);
  • Buscar desde una posición específica;
  • Busque una ocurrencia con un número específico (segundo, tercero, etc.).

De hecho, duplica las capacidades de la función anterior. Esto se hace para mantener la compatibilidad con módulos compilados en versiones anteriores. Se recomienda que ya no utilice la antigua función Buscar().

A continuación se muestra un ejemplo que utiliza las nuevas capacidades de búsqueda. La búsqueda inversa es útil cuando necesita la última parte de una cadena formalizada, como el nombre completo del archivo en una URL. Y buscar desde una posición específica ayuda en los casos en que necesita buscar en un fragmento conocido y no en toda la línea.

Caracteres especiales en 1C 8.3 - conjunto caracteres especiales para tipos de datos de cadena.

Veamos cada uno de ellos con más detalle.

Caracteres especiales en 1C: VK, VTab, NPP, PS, PF, Tab

Los caracteres especiales se llaman utilizando la propiedad global "Caracteres", por ejemplo:

Texto = “Texto antes de la pestaña” + Símbolos.Tab + “texto después de la pestaña”;

Obtenga 267 lecciones en video sobre 1C gratis:

  • VC (CR) - retorno de carro. En los viejos tiempos, en las impresoras matriciales o tipo margarita, este código de caracteres se usaba como un comando que devolvía el cabezal de impresión al principio de la línea.
  • NSP (NBSp): espacio sin separación (a menudo visto en cadenas numéricas, por ejemplo: 1000).
  • PS (LF) - avance de línea (LF - avance de línea): desplace el tambor una línea hacia abajo, el cabezal de impresión está en el mismo lugar.
  • PF (FF) - traducción de formato. La hoja se expulsa de la impresora y comienza la impresión en una hoja nueva.
  • Tabulador es el carácter de tabulador. La tabulación horizontal es una forma de posicionarse para imprimir en la columna más cercana que sea múltiplo de un número (por ejemplo, 8, 16, 24...).
  • VTab: tabulación vertical. Similar al horizontal, pero colocado en una línea. Provoca cierto desplazamiento del tambor de la impresora (¡el cabezal de impresión permanece en la misma posición (columna)!)

PS + VK es una combinación que realiza dos operaciones: desplaza el carrete hacia abajo una línea y devuelve el carro de impresión al principio de la línea, que corresponde a lo que el usuario espera obtener al presionar Enter.

Si está empezando a aprender a programar 1C, le recomendamos nuestro curso gratis(no lo olvide

El tipo String se encuentra en todos los lenguajes de programación. Es primitivo y en 1C hay muchas funciones para trabajar con él. En este artículo veremos más de cerca. varias maneras trabajar con tipos de cadenas en 1C 8.3 y 8.2 usando ejemplos.

Línea

Para convertir una variable de cualquier tipo en una cadena, existe una función del mismo nombre “String()”. El parámetro de entrada será la propia variable, cuya representación en cadena debe obtenerse.

Cadena(Falso) // devuelve "No"
Cadena(12345) // devuelve "12,345"
Cadena (Fecha actual ()) //"21/07/2017 11:55:36″

Es posible convertir no sólo tipos primitivos en una cadena, sino también otros, por ejemplo, elementos de directorios y documentos.

SokrLP, SokrL, SokrP

Los parámetros de entrada de estas funciones son una variable de tipo cadena. Las funciones eliminan caracteres insignificantes (espacios, retornos de carro, etc.): del lado izquierdo y derecho, sólo del lado izquierdo y sólo del derecho, respectivamente.

Abreviatura("Se eliminarán los espacios en ambos lados") // "Se eliminarán los espacios en ambos lados"
Abreviatura("Se eliminarán los espacios de ambos lados") // "Se eliminarán los espacios de la izquierda"
Abreviatura("Se eliminarán los espacios de ambos lados") // "Se eliminarán los espacios de la derecha"

Leo, Derecha, Medio

Estas funciones le permiten recortar parte de una cuerda. La función "Left()" devolverá la porción de una cadena desde su lado izquierdo de la longitud especificada. La función "Derecha()" es similar, pero recorta desde la derecha. La función “Avg()” le permite especificar el número del carácter a partir del cual se seleccionará la línea y su longitud.

Lev("variable de cadena", 4) // devuelve "Str"
Right("variable de cadena", 7) // devuelve "variable"
Medio("variable de cadena", 2, 5) // devuelve "troco"

Longitud de cadena

La función determina la cantidad de caracteres contenidos en una variable de cadena.

StrLength("Palabra") // el resultado de la ejecución será el número 5

Encontrar

La función permite buscar parte de una cadena en una variable de cadena. El valor de retorno será un número que muestra la posición del comienzo de la cadena encontrada. Si no se encuentra ninguna coincidencia, se devuelve cero.

Tenga en cuenta que la búsqueda distingue entre mayúsculas y minúsculas. Si hay más de una aparición de la subcadena de búsqueda en la cadena original, la función devolverá el comienzo de la primera aparición.

Buscar("uno, dos, uno, dos, tres", "dos") // la función devolverá el número 6

linea vacia

El uso de esta función le permite determinar si una cadena está vacía. No se tienen en cuenta los caracteres menores como espacios, retornos de carro y otros.

EmptyString("Pupkin Vasily Ivanovich") // la función devolverá el valor False
EmptyString(" ") // la función devolverá el valor True

VReg, NReg, TReg

Estas funciones son muy útiles al comparar y convertir variables de cadena. "Vreg()" devolverá la cadena original en mayúsculas, "HPreg()" en minúsculas y "TReg()" la formateará para que el primer carácter de cada palabra individual esté en mayúscula y todos los caracteres siguientes estén en mayúscula.

VReg("DIRECTOR GENERAL") // valor de retorno - "DIRECTOR GENERAL"
NReg(“CEO DIRECTOR”) // valor de retorno – “CEO”
TREG(“CEO DIRECTOR”) // valor de retorno – “Director General”

Reemplazar página

Esta función es análoga a la sustitución en editores de texto. Le permite reemplazar un carácter o conjunto de caracteres por otro en variables de cadena.

StrReplace("rojo, blanco, amarillo", ","", ";") // devuelve "rojo; blanco; amarillo"

StrNumberLines

La función le permite determinar el número de líneas separadas por retornos de carro en una variable de texto.

El bucle en el siguiente ejemplo pasará por tres rondas porque la función LineNumberRow devolverá el valor 3:

Para ind = 1 por StrNumber of Strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Ciclo
<тело цикла>
Fin del ciclo;

StrGetString

Esta función funciona con texto multilínea de la misma forma que la anterior. Le permite obtener una cadena específica de una variable de texto.

StrGetString("Cadena1" + Caracteres.PS + "Cadena2" + Caracteres.PS + "Cadena3", 2) // devuelve "Cadena2"

Número de páginaOcurrencias

La función cuenta el número de apariciones de un carácter o subcadena en la cadena de búsqueda.

StrNumberAttachments("a;b;c;d; ", ";") // la función devolverá el número 4

Símbolo y código de símbolo

Estas funciones le permiten obtener un carácter por su código en codificación Unicode, así como determinar este código por el carácter mismo.

SymbolCode("A") // la función devolverá el número 1.040
CharacterCode(1040) // la función devolverá “A”

Tareas comunes al trabajar con cuerdas

Concatenar cadenas

Para combinar varias cadenas (para realizar la concatenación), basta con utilizar el operador de suma.

“Línea 1″ + “Línea 2″ //el resultado de sumar dos líneas será “Línea 1 Línea 2”

Conversión de tipo

Para convertir un tipo en una cadena, por ejemplo, un enlace a un elemento de directorio, un número, etc., basta con utilizar la función “String()”. Funciones como “ScrLP()” también convertirán variables en una cadena, pero inmediatamente cortarán los caracteres insignificantes.

Cadena(1000) // devuelve "1000"

Tenga en cuenta que al convertir un número en una cadena, el programa agrega automáticamente un espacio que separa los mil. Para evitar esto, puedes utilizar las siguientes construcciones:

StrReplace(String(1000),Characters.NPP,"") // devuelve "1000"

Cadena(Formato(1000,"HG=")) // devuelve "1000"

Citas en una cadena

Muy a menudo tendrás que lidiar con la necesidad de especificar comillas en una variable de cadena. Puede ser el texto de la solicitud escrito en el configurador o simplemente una variable. Para resolver este problema, sólo necesita poner dos comillas.

Header = String("Horns and Hooves LLC - ¡somos nosotros!") // devolverá "Horns and Hooves LLC - ¡somos nosotros!"

Multilínea, salto de línea

Para crear texto de varias líneas, simplemente agréguele saltos de línea (Symbols.PS).

MultilineText = “Primera línea” + Símbolos.PS + “Segunda línea”

Cómo eliminar espacios

Para eliminar espacios a la derecha o a la izquierda, puede utilizar la función “ScrAP()” (así como “ScrL()” y “ScrP()”):

StringNoSpaces = Abreviatura("Muchas letras") // la función devolverá el valor "Muchas letras"

Si después de convertir un número en una cadena necesita eliminar espacios que no se rompen, utilice la siguiente construcción:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // devuelve "99999"

Los programadores también suelen utilizar la siguiente construcción, que permite eliminar o reemplazar con otro carácter todos los espacios en una variable de texto:

StringNoSpaces = StrReplace("hola","") // devuelve "hola"

Comparando cadenas entre sí

Puede comparar términos con el signo igual habitual. La comparación distingue entre mayúsculas y minúsculas.

"Hola" = "hola" // devuelve Falso
"Hola" = "Hola" // devuelve Verdadero
"Hola" = "Adiós" // devuelve Falso