Nuevas funciones para trabajar con cadenas. Nuevas funciones para trabajar con cadenas 1s 8.2 número de serie de un carácter en una cadena

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 en detalle varias formas de 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 "troko"

Longitud de cadena

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

StrLength("Word") // 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 al reemplazo en los 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, puede utilizar las siguientes construcciones:

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

String(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 separen, 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" // devolverá Falso

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 están entre comillas dobles. Se pueden agregar varias variables de este tipo.

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 el valor de una variable de tipo 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.

Abreviatura(<Строка>) — 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

Notas de A través del espejo

18/08/2014 Nuevas funciones para trabajar con cadenas

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. Podría ser un análisis de algunos archivos recibidos del equipo o, por ejemplo, un análisis de un registro tecnológico.

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, una función, a diferencia de un objeto. Comparación de valores, funciona tanto en el cliente ligero como 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, es conveniente utilizarlos en el operador. Si:

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 Encontrar() Hemos implementado una nueva función que tiene capacidades 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. Función antigua Encontrar() Se recomienda no volver a utilizar.

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.

Existen pocos mecanismos para trabajar con cadenas en consultas 1C. Primero, se pueden agregar las líneas. En segundo lugar, puedes tomar una subcadena de una cadena. En tercer lugar, se pueden comparar cadenas, incluso por patrón. Probablemente eso sea todo lo que se puede hacer con cuerdas.

Adición de cadenas

Para agregar filas en una consulta, se utiliza la operación "+". Sólo puedes agregar cadenas de longitud limitada.

SELECCIONE "Nombre: " + Contrapartes. Nombre COMO Columna 1 DEL Directorio. Contrapartes COMO Contrapartes DONDE Contrapartes. Enlace = &Enlace

Función de subcadena

SUBCADE(<Строка>, <НачальнаяПозиция>, <Длина>)

Un análogo de la función Environment() del modelo de objetos. La función Substring() se puede aplicar a datos de cadena y le permite seleccionar un fragmento <Строки> , comenzando con el número de carácter <НачальнаяПозиция> (los caracteres de una línea están numerados comenzando desde 1) y longitud <Длина> caracteres. El resultado del cálculo de la función tiene un tipo de cadena de longitud variable y la longitud se considerará ilimitada si <Строка> tiene longitud y parámetros ilimitados <Длина> no es una constante ni mayor que 1024.

Si la longitud de la cadena es menor que la especificada en el segundo parámetro, la función devolverá una cadena vacía.

¡Atención! No se recomienda utilizar la función SUBSTRING() para convertir cadenas de longitud ilimitada en cadenas de longitud limitada. En su lugar, es mejor utilizar el operador de conversión EXPRESS().

Función similar

Si necesitamos asegurarnos de que un atributo de cadena cumpla con ciertos criterios, lo comparamos:

SELECCIONE Contrapartes Nombre COMO Columna 1 DESDE Directorio Contrapartes COMO Contrapartes DONDE Contrapartes Nombre = "Gazprom"

Pero ¿qué pasa si necesitas una comparación más sutil? ¿No sólo igualdad o desigualdad, sino similitud con un patrón determinado? Precisamente para esto se creó la función SIMILAR.

LIKE: operador para comprobar la similitud de una cadena con un patrón. Análogo de LIKE en SQL.

El operador SIMILAR le permite comparar el valor de la expresión especificada a la izquierda con la cadena de patrón especificada a la derecha. El valor de la expresión debe ser de tipo cadena. Si el valor de la expresión coincide con el patrón, el resultado del operador será VERDADERO, de lo contrario será FALSO.

Los siguientes caracteres en la cadena de plantilla son caracteres de servicio y tienen un significado diferente al carácter de cadena:

  • % (porcentaje): una secuencia que contiene cualquier número de caracteres arbitrarios;
  • _ (guión bajo): un carácter arbitrario;
  • […] (uno o más caracteres entre corchetes): cualquier carácter incluido dentro de los corchetes. La enumeración puede contener rangos, por ejemplo a-z, es decir, un carácter arbitrario incluido en el rango, incluidos los extremos del rango;
  • [^...] (entre corchetes, un signo de negación seguido de uno o más caracteres): cualquier carácter distinto de los enumerados después del signo de negación.

Cualquier otro símbolo significa sí mismo y no conlleva ninguna carga adicional. Si uno de los caracteres enumerados debe escribirse como sí mismo, debe ir precedido de<Спецсимвол>. Mí mismo<Спецсимвол>(cualquier carácter adecuado) se define en la misma declaración después de la palabra clave SPECIAL CHARACTER.

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. Podría ser un análisis de algunos archivos recibidos del equipo o, por ejemplo, un análisis de un registro tecnológico.

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, la función, a diferencia del objeto Comparación de valores, funciona tanto en el cliente ligero como 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(), hemos implementado una nueva función que tiene capacidades 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.