Un literal de cadena del es la representación de un valor de la secuencia dentro del código fuente de un programa de computadora . Existen las notaciones alternas numerosas para especificar literales de cadena, y la notación exacta depende del lenguaje de programación individual en la pregunta. Sin embargo, hay algo pautas generales que la mayoría de los lenguajes de programación modernos siguen.
Específicamente, la mayoría de los literales de cadena se pueden especificar usar:
notación declarativa del
;
delimitadores del whitespace (muesca);
delimitadores acorchetados (el cotizar);
carácteres de escape; o
una combinación de alguno o de todo el antedicho
En el lenguaje de programación original del FORTRAN, los literales de cadena fueron escritos en la notación supuesta de Hollerith del, donde una cuenta decimal del número de carácteres fue seguida por la letra H, y entonces los carácteres de la secuencia:
secuencia de Hollerith del ejemplo 27HAn
Este estilo declarativo de la notación se pone en contraste con el delimitador acorchetado que cotiza, porque lo hace no requerir el uso del " equilibrado; bracketed" carácteres de cualquier lado de la secuencia.
Ventajas:
evita el problema de la colisión del delimitador
permite la inclusión de los Metacharacters que se pudieron confundir de otra manera como comandos
Desventajas:
este tipo de notación es error-prone para la entrada manual por los programadores
Debido a las desventajas, la mayoría de los lenguajes de programación no utilizan este estilo de declarativo notación.
En el YAML, literales de cadena puede ser especificado por la colocación relativa Whitespace y muesca.
- título: Una secuencia multilínea del ejemplo en YAML cuerpo: | Esto es una secuencia multilínea. " special" los metacharacters pueden aparecer aquí. El contenido de esta secuencia es indicado por la muesca.
La mayoría de los lenguajes de programación modernos utilizan los delimitadores (también delimitadores equilibrados del soporte del, o el que cotiza ) para especificar literales de cadena. Las cotizaciones dobles son más los delimitadores del campo común cotizando usados:
" ¡Hola allí! "
Algunas idiomas también permiten el uso de apóstrofes como alternativa a las cotizaciones dobles (aunque la secuencia debe comenzar y terminar con la misma clase de marca de cita):
“Hola allí!”
Observar que estas comillas son el desparejado (el mismo carácter se utiliza como un abrelatas y más cercano), que es una resaca de la tecnología de la máquina de escribir que era el precursor de los dispositivos más tempranos de entrada y de salida de la computadora. El juego de caracteres de Unicode incluye (abertura y closing separados) versiones apareadas de cotizaciones solas y dobles:
“Hola allí!” `Hola allí!'
Las cotizaciones dobles apareadas se pueden utilizar en el Visual Basic .
El lenguaje de programación de la posdata utiliza paréntesis, con los newlines encajados permitidos, y paréntesis unescaped también encajados los proporcionaron se aparean correctamente:
(El rápido (marrón zorro))
La colisión del delimitador del es un problema común para las notaciones del literal de cadena que utilizan delimitadores equilibrados y el cotizar. El problema ocurre cuando un programador intenta utilizar un carácter que cotiza como parte del literal de cadena sí mismo. Porque esto es un problema muy común, un número de métodos para evitar la colisión del delimitador se han inventado.
Algunas idiomas ( Modula-2 del e., Javascript ) intentan evitar el problema de la colisión del delimitador permitiendo cotizar dual estilo. Típicamente, esto consiste en el permitir que del programador utilice cualquier apóstrofes o cotizaciones dobles alternativamente.
" Éste es apple." de Juan; “Dije, " ¿Puede usted oírme? " ”
Un problema con cotizar dual es que no permite para la inclusión del ambos estilos de de cotizaciones inmediatamente dentro del mismo literal (a menos que escapados, ven abajo).
Algunos lenguajes de programación permiten variaciones sutiles en cotizar dual, tratando apóstrofes y cotizaciones dobles levemente diferentemente ( sh, Perl del e.
Un método para evitar la colisión del delimitador para utilizar los carácteres de escape
" Dije, \ " ¿Puede usted oírme? \ " "
El carácter de escape más de uso general con este fin es el " de la barra; \ ", la tradición para la cual originó en Unix. De un punto de vista del diseño de la lengua, esto el acercamiento es adecuado, pero hay desventajas:
el texto del
puede ser hecho ilegible cuando está dejado en desorden con los carácteres de escape numerosos
los carácteres de escape se requieren para ser escapados, cuando no están previstos como carácteres de escape
aunque sea fácil mecanografiar, puedan ser secretos alguien desconocedor con la lengua
" Dije, \ " La trayectoria de Windows es C:\ \ \ \ Foo \ \ \ \ Baz \ \ \ " de la barra; "
La presencia confusa de demasiados carácteres del escape y de la raya vertical en una secuencia se desacredita comúnmente como síndrome del toothpick que se inclina.
Un concepto extendido del carácter de escape, una semencia de escape es también los medios de evitar colisión del delimitador. Una semencia de escape consiste en carácteres dos o más consecutivos que pueden tener significado especial cuando está utilizado en el contexto de un literal de cadena.
" ¿Dije, \ x22Can que usted me oye? \ x22"
Las semencias de escape se pueden también utilizar para los propósitos con excepción de evitar la colisión del delimitador, y puede también incluir metacharacters. (véase los Metacharacters abajo).
Algunas idiomas (tales como Pascal, BASIC y DCL ) evitan la colisión del delimitador por el que dobla encima de en las comillas que se piensan para ser parte del literal de cadena sí mismo:
“Este de la secuencia de Pascal contiene dos apóstrofes” " Dije, " " ¿Puede usted oírme? " " "
El cotizar del triple del : Una tal extensión, el uso del que cotiza triple, se utiliza en el pitón :
el del
esto es manzana de Juan.
" " " Juan es " supuesto de Nancy; boyfriend". " " "
Los literales de la sentencia protegida del triple se pueden delimitar por el El cotizar del múltiplo de : Otra tal extensión es el uso del múltiplo del que cotiza, que permite que el autor elija qué carácteres deben especificar los límites de un literal de cadena. Por ejemplo en Perl : el qq^I dijo, " ¿Puede usted oírme? " ^ el qq@I dijo, " ¿Puede usted oírme? " @ el qq§I dijo, " ¿Puede usted oírme? " § todos producen el resultado deseado. Aunque esta notación sea más flexible, pocas idiomas la apoyan. Perl y el rubí es dos que lo hacen. Del un documento aquí es una notación que cotiza alterna que permite el programador para especificar un identificador único arbitrario como límite contento para un literal de cadena. Esto evita la colisión del delimitador, y también preserva newlines en el código fuente como newlines en el literal de cadena sí mismo. Por ejemplo, en un literal de cadena C, si se sigue la barra por una letra tal como " b", " n" o " t", entonces esto representa una tecla de retroceso sin impresión, newline o carácter de la lengüeta del respectivamente. O si la barra es seguida por 3 dígitos octales, entonces esta secuencia se interpreta como representación del carácter arbitrario con especificado Código ASCII . Esto fue ampliada más adelante para no prohibir a un más moderno la notación hexadecimal del código de carácter de : " ¿Dije, \ t \ t \ x22Can que usted me oye? \ x22 \ n" ¡ Sigils Cómo manejar los sigils incluidos en un literal de cadena. ver el Sigil --> Otras idiomas siguen a misma convención que usa delimitadores que cotizan alternos: ¡ o: la trayectoria de Windows del q'The es C:\Foo\Bar\Baz\ '; La notación de la lengua de C# para especificar secuencias crudas se llama el @-quoting, donde @ un símbolo se pone antes de la marca de cita de la abertura de un literal de cadena: @" " de C:\Foo\Bar\Baz\; se asegura que las barras no estén interpretadas como carácteres de escape. Semejantemente, las comillas se pueden incluir en una secuencia @-quoted doblándolas: @" Dije, " " Hola there." " " Una secuencia cruda es simplemente una en el cual no se interpreta ningunos de los carácteres como metacharacters, y no se aplica ninguna interpretación especial o el proceso en la representación del literal de cadena. ¡ Manipulación de carácteres de newline Cómo manejar newlines en código fuente contra newlines pensó para el literal de cadena. --> Por ejemplo, el código siguiente del Perl : $sName = " Nancy" ; $sGreet = " Hola World" ; " de la impresión; $sName dijo $sGreet a la muchedumbre de people." ; produce la salida: Nancy dijo hola el mundo a la muchedumbre de gente. El carácter del sigil ($) se interpreta para indicar variable interpolación. Semejantemente, la función del Printf produce la misma salida usar la notación por ejemplo: " del printf; %s dijo %s a la muchedumbre de people.", ($sName, $sGreet); Los metacharacters (%s) indican la interpolación variable. Esto se pone en contraste con el " raw" secuencias: el sName de la impresión r'$ dijo $sGreet a la muchedumbre de gente. '; como cuál producir la salida: $sName dijo $sGreet a la muchedumbre de gente. Aquí los carácteres de $ no son los sigils, y no se interpretan para tener ninguÌn significado con excepción del texto llano. El REXX utiliza carácteres del sufijo para especificar carácteres o secuencias usar su código hexadecimal o binario., Las idiomas que carecen flexibilidad en especificar literales de cadena hacen él particularmente incómodo escribir el código programado que genera el otro código programado. Esto es particularmente verdad cuando la generación la lengua es el igual o similar a la lengua de la salida. por ejemplo: Sin embargo, algunas idiomas bien-se adaptan particularmente al producto esta clase de salida self-similar, especialmente las que apoyan opciones múltiples para evitar la colisión del delimitador. Aparte de los mecánicos de la secuencia specifiying los literales, sin embargo, uno deben considerar implicaciones de la seguridad del código que genera el otro código, especialmente si la salida se basa por lo menos parcialmente en untrusted entrada del usuario. Esto es potencialmente una debilidad seria de la seguridad. Esto es particularmente agudo en el caso de los usos en Internet, donde los usuarios malévolos pueden aprovecharse de tales debilidades para derribar la operación del uso, por ejemplo montando un ataque de la inyección del SQL. ¡ Notas y referencias --> .
" " " o del Aquí documentos
Metacharacters
Muchas idiomas apoyan el uso de los Metacharacters dentro de literales de cadena. Metacharacters tener interpretaciones diversas dependiendo del contexto y de la lengua, pero ser generalmente una clase de “procesar comando” para representar la impresión o carácteres sin impresión. Secuencias crudas
Algunas idiomas (e. pitón ) siguen a convención donde un carácter principal marca una secuencia como siendo " raw": r" La trayectoria de Windows es " de C:\Foo\Bar\Baz\; Interpolación variable
Las idiomas diferencian encendido si y cómo interpretar literales de cadena como cualquiera “crudo” o “variable interpoló”. La interpolación variable es el proceso de evaluar una expresión que contiene uno o más variables, y de la vuelta salida donde las variables se substituyen por sus valores correspondientes adentro memoria. En las cáscaras de Unix sh-compatibles, cotizar-delimitadas (") se interpolan las secuencias, mientras que no son las secuencias apóstrofe-delimitadas ( Secuencias binarias y hexadecimales
'20 ' x " 0010 0000" b " 00100000" b
todos rinden el carácter de espacio, evitando la llamada de función X2C (20) . Encajadura de código fuente en literales de cadena
código de la escritura para producir los quines * generación de una lengua de la salida dentro de una plantilla del Web;
usar el XSLT para generar XSLT, o el SQL para generar más SQL
generando una representación de la posdata de un documento para los propósitos de impresión, dentro de un uso de documento-proceso escrito en el C o una cierta otra lengua. Random links: Cyclopentadiene | Howard, Nueva York | Ruta verde cruzada de la isla | Era jacobea | WFLD