stringtranslate.com

Comparación de lenguajes de programación (funciones de cadena)

Las funciones de cadena se utilizan en lenguajes de programación informática para manipular una cadena o consultar información sobre una cadena (algunas hacen ambas cosas).

La mayoría de los lenguajes de programación que tienen un tipo de datos de cadena tendrán algunas funciones de cadena, aunque puede haber otras formas de bajo nivel dentro de cada lenguaje para manejar cadenas directamente. En los lenguajes orientados a objetos, las funciones de cadena se implementan a menudo como propiedades y métodos de objetos de cadena. En los lenguajes funcionales y basados ​​en listas, una cadena se representa como una lista (de códigos de caracteres), por lo tanto, todos los procedimientos de manipulación de listas podrían considerarse funciones de cadena. Sin embargo, dichos lenguajes también pueden implementar un subconjunto de funciones explícitas específicas de cadenas.

En el caso de las funciones que manipulan cadenas, los lenguajes modernos orientados a objetos, como C# y Java , tienen cadenas inmutables y devuelven una copia (en la memoria dinámica recién asignada), mientras que otros, como C, manipulan la cadena original a menos que el programador copie los datos en una nueva cadena. Véase, por ejemplo, la concatenación a continuación.

El ejemplo más básico de una función de cadena es la length(string)función . Esta función devuelve la longitud de un literal de cadena .

Por ejemplo length("hello world")devolvería 11.

Otros lenguajes pueden tener funciones de cadena con sintaxis, parámetros o resultados similares o exactamente iguales. Por ejemplo, en muchos lenguajes la función length suele representarse como len(string) . La siguiente lista de funciones comunes tiene como objetivo ayudar a limitar esta confusión.

Funciones de cadena comunes (referencia en varios idiomas)

A continuación se enumeran las funciones de cadena comunes a muchos lenguajes, incluidos los diferentes nombres utilizados. La siguiente lista de funciones comunes tiene como objetivo ayudar a los programadores a encontrar la función equivalente en un lenguaje. Tenga en cuenta que la concatenación de cadenas y las expresiones regulares se manejan en páginas separadas. Las declaraciones entre guillemets (« … ») son opcionales.

Carácter

{ Ejemplo en Pascal } var MyStr : string = 'Hola, mundo' ; MyChar : Char ; begin MyChar := MyStr [ 2 ] ; // 'e'          
# Ejemplo en ALGOL 68 #"Hola, mundo"[2]; // 'e'
// Ejemplo en C #include <stdio.h>  // para printf char MyStr [] = "Hola, mundo" ; printf ( "%c" , * ( MyStr + 1 )); // 'e' printf ( "%c" , * ( MyStr + 7 )); // 'W' printf ( "%c" , MyStr [ 11 ]); // 'd' printf ( "%s" , MyStr ); // 'Hola, mundo' printf ( "%s" , "Hola(2), Mundo(2)" ); // 'Hola(2), Mundo(2)'              
// Ejemplo en C++ #include <iostream>  // para "cout" #include <string.h>  // para el tipo de datos "string" que utiliza el espacio de nombres std ; char MyStr1 [] = "Hola(1), Mundo(1)" ; string MyStr2 = "Hola(2), Mundo(2)" ; cout << "Hola(3), Mundo(3)" ; // 'Hola(3), Mundo(3)' cout << MyStr2 [ 6 ]; // '2' cout << MyStr1 . substr ( 5 , 3 ); // '(1)'                     
// Ejemplo en C# "Hola, mundo" [ 2 ]; // 'l' 
# Ejemplo en Perl 5 substr ( "Hola, Mundo" , 1 , 1 ); # 'e'   
# Ejemplos en Python "Hola, mundo" [ 2 ]  # 'l' "Hola, mundo" [ - 3 ]  # 'r'
# Ejemplo en Raku "Hola, mundo" . substr ( 1 , 1 ); # 'e'
' Ejemplo en Visual Basic Mid ( "Hola, mundo" , 2 , 1 )
' Ejemplo en Visual Basic .NET "Hola, mundo" . Caracteres ( 2 ) ' "l"c 
" Ejemplo en Smalltalk " 'Hola, mundo'  en:  2 .  "$e"
//Ejemplo en Rust "Hola, mundo" . chars (). nth ( 2 ); // Some('l') 

Comparar (resultado entero)

# Ejemplo en Perl 5 "hola" cmp "mundo" ; # devuelve -1   
# Ejemplo en Python cmp ( "hola" ,  "mundo" )  # devuelve -1
# Ejemplos en Raku "hola"  cmp  "mundo" ; # devuelve Menos "mundo"  cmp  "hola" ; # devuelve Más "hola"  cmp  "hola" ; # devuelve Igual
/** Ejemplo en Rexx */ compare ( "hola" , "mundo" ) /* devuelve el índice de desajuste: 1 */  
; Ejemplo en Scheme ( use-modules ( srfi srfi-13 )) ; devuelve el índice de desajuste: 0 ( string-compare "hello" "world" values ​​values ​​values ​​)       

Comparar (operador relacional basado en resultado booleano)

% Ejemplo en Erlang "hola" > "mundo" . % devuelve falso   
# Ejemplo en Raku "arte"  gt  "pintura" ; # devuelve Falso "arte"  lt  "pintura" ; # devuelve Verdadero
# Ejemplo en Windows PowerShell "hello"  -gt  "world"  # devuelve falso
;; Ejemplo en Common Lisp ( cadena> "arte" "pintura" ) ; devuelve nil ( cadena< "arte" "pintura" ) ; devuelve un valor distinto de nil      

Concatenación

{ Ejemplo en Pascal } 'abc' + 'def' ; // devuelve "abcdef"   
// Ejemplo en C# "abc" + "def" ; // devuelve "abcdef"   
' Ejemplo en Visual Basic "abc" & "def" ' devuelve "abcdef" "abc" + "def" ' devuelve "abcdef" "abc" & Null ' devuelve "abc" "abc" + Null ' devuelve Null            
// Ejemplo en D "abc" ~ "def" ; // devuelve "abcdef"   
;; Ejemplo en Common Lisp ( concatenar 'string "abc " "def " "ghi" ) ; devuelve "abc def ghi"     
# Ejemplo en Perl 5 "abc" . "def" ; # devuelve "abcdef" "Perl " . 5 ; # devuelve "Perl 5"      
# Ejemplo en Raku "abc" ~ "def" ; # devuelve "abcdef" "Perl " ~ 6 ; # devuelve "Perl 6"

Contiene

¢ Ejemplo en ALGOL 68 ¢cadena en cadena ("e", loc int , "Hola amigo"); ¢ devuelve verdadero ¢cadena en cadena ("z", loc int , "palabra"); ¢ devuelve falso ¢
// Ejemplo En C# "Hola amigo" . Contiene ( "e" ); // devuelve verdadero "palabra" . Contiene ( "z" ); // devuelve falso  
# Ejemplo en Python "e"  en  "Hola amigo"  # devuelve verdadero "z"  en  "palabra"  # devuelve falso
# Ejemplo en Raku "¡Buenos días!" . contiene ( 'z' ) # devuelve Falso "¡Buenos días!" . contiene ( 'í' ); # devuelve Verdadero
" Ejemplo en Smalltalk " 'Hola amigo'  incluye Substring:  'e'  " devuelve verdadero " ' palabra '  incluye Substring:  'z'  " devuelve falso "

Igualdad

Comprueba si dos cadenas son iguales. Consulte también #Compare y #Compare. Tenga en cuenta que realizar comprobaciones de igualdad mediante una comparación genérica con un resultado entero no solo es confuso para el programador, sino que a menudo es una operación significativamente más costosa; esto es especialmente cierto cuando se utilizan " cadenas C ".

// Ejemplo en C# "hola" == "mundo" // devuelve falso   
' Ejemplo en Visual Basic "hola" = "mundo" ' devuelve falso   
# Ejemplos en Perl 5 'hola' eq 'mundo' # devuelve 0 'hola' eq 'hola' # devuelve 1      
# Ejemplos en Raku 'hola'  eq  'mundo'  # devuelve Falso 'hola'  eq  'hola'  # devuelve Verdadero
# Ejemplo en Windows PowerShell "hello"  -eq  "world"  # devuelve falso
⍝ Ejemplo en APL 'hola' 'mundo' ⍝ devuelve 0   


Encontrar

Ejemplos


Encuentra el personaje

// Ejemplos en C# "Hola amigo" . IndexOf ( 'e' ); // devuelve 1 "palabra" . IndexOf ( 'z' ) // devuelve -1  
; Ejemplos en Common Lisp ( posición #\e "Hola amigo" ) ; devuelve 1 ( posición #\z "palabra" ) ; devuelve NIL      

^a Dado un conjunto de caracteres, SCAN devuelve la posición del primer carácter encontrado, [19] mientras que VERIFY devuelve la posición del primer carácter que no pertenece al conjunto. [20]

Formato

// Ejemplo en C# String . Format ( "Mi {0} cuesta {1:C2}" , "bolígrafo" , 19,99 ); // devuelve "Mi bolígrafo cuesta $19,99"   
// Ejemplo en formato Object Pascal (Delphi) ( 'Mi %s cuesta $%2f' , [ 'bolígrafo' , 1 9,99 ]) ; // devuelve "Mi bolígrafo cuesta $19,99"   
// Ejemplo en Java String . format ( "Mi %s cuesta $%2f" , "bolígrafo" , 19,99 ); // devuelve "Mi bolígrafo cuesta $19,99"   
# Ejemplos en Raku sprintf  "Mi %s cuesta \$%.2f" , "bolígrafo" , 19.99 ; # devuelve "Mi bolígrafo cuesta $19.99" 1 . fmt ( "%04d" ); # devuelve "0001"
# Ejemplo en Python "Mi %s cuesta $ %.2f "  %  ( "bolígrafo" ,  19.99 );  # devuelve "Mi bolígrafo cuesta $19.99" "Mi {0} cuesta $ {1:.2f} " . format ( "bolígrafo" ,  19.99 );  # devuelve "Mi bolígrafo cuesta $19.99"
#Ejemplo en Python 3.6+ pen  =  "pen" f "Mi { pen } cuesta { 19,99 } "  #devuelve "Mi bolígrafo cuesta 19,99"
; Ejemplo en Scheme ( formato "Mi ~a cuesta $~1,2F" "pluma" 19,99 ) ; devuelve "Mi pluma cuesta $19,99"    
/* ejemplo en PL/I */ put string ( some_string ) edit ( ' Mi ' , ' bolígrafo ' , ' cuesta ' , 19.99 )( a , a , a , p ' $$$V .99 ' ) /* devuelve "Mi bolígrafo cuesta $19.99" */       

Desigualdad

Comprueba si dos cadenas no son iguales. Véase también #Igualdad.

// Ejemplo en C# "hola" != "mundo" // devuelve verdadero   
' Ejemplo en Visual Basic "hola" <> "mundo" ' devuelve verdadero   
;; Ejemplo en Clojure ( not= "hola" "mundo" ) ; ⇒ verdadero  
# Ejemplo en Perl 5 'hola' ne 'mundo' # devuelve 1   
# Ejemplo en Raku 'hola'  y  'mundo'  # devuelve Verdadero
# Ejemplo en Windows PowerShell "hola"  -ne  "mundo"  # devuelve verdadero

índice

ver #Encontrar

índice de

ver #Encontrar

instrucción

ver #Encontrar

Instrrev

ver #rfind

unirse

// Ejemplo en C# String . Join ( "-" , { "a" , "b" , "c" }) // "abc"    
" Ejemplo en Smalltalk " #( 'a'  'b'  'c' )  joinUsing:  '-'  " 'abc' "
# Ejemplo en Perl 5 join ( '-' , ( 'a' , 'b' , 'c' )); # 'abc'     
# Ejemplo en Raku <ab c> . join ( '-' ); # 'abc'
# Ejemplo en Python "-" . join ([ "a" ,  "b" ,  "c" ])  # 'abc'
# Ejemplo en Ruby [ "a" , "b" , "c" ]. join ( "-" ) # 'abc'   
; Ejemplo en Scheme ( use-modules ( srfi srfi-13 )) ( string-join ' ( "a" "b" "c" ) "-" ) ; "abc"       

último índice de

ver #rfind

izquierda

# Ejemplo en Raku "¡Hola!" . substr ( 0 , 6 ); # devuelve "Hola".
/* Ejemplos en Rexx */ izquierda ( "abcde" , 3 ) /* devuelve "abc" */ izquierda ( "abcde" , 8 ) /* devuelve "abcde " */ izquierda ( "abcde" , 8 , "*" ) /* devuelve "abcde***" */       
; Ejemplos en Scheme ( use-modules ( srfi srfi-13 )) ( string-take "abcde" , 3 ) ; devuelve "abc" ( string-take "abcde" , 8 ) ; error        
' Ejemplos en Visual Basic Izquierda ( "sandroguidi" , 3 ) ' devuelve "san" Izquierda ( "sandroguidi" , 100 ) ' devuelve "sandroguidi"    


lente

ver #longitud


longitud

// Ejemplos en C# "hola" . Longitud ; // devuelve 5 "" . Longitud ; // devuelve 0  
# Ejemplos en Erlang string : len ( "hola" ). % devuelve 5 string : len ( "" ). % devuelve 0     
# Ejemplos en Perl 5 length ( "hola" ); # devuelve 5 length ( "" ); # devuelve 0  
# Ejemplos en Raku "🏳️‍🌈" . chars ; chars  "🏳️‍🌈" ; # ambos devuelven 1 "🏳️‍🌈" . codes ; codes  "🏳️‍🌈" ; # ambos devuelven 4 "" . chars ; chars  "" ; # ambos devuelven 0 "" . codes ; codes  "" ; # ambos devuelven 0
' Ejemplos en Visual Basic Len ( "hola" ) ' devuelve 5 Len ( "" ) ' devuelve 0  
//Ejemplos en Objective-C [ @"hello" Length ] //devuelve 5 [ @"" Length ] //devuelve 0    
-- Ejemplos en Lua ( "hola" ): len ()  -- devuelve 5 # ""  -- devuelve 0

localizar

ver #Encontrar


Minúsculas

// Ejemplo en C# "¿Wiki significa rápido?" . ToLower (); // "¿wiki significa rápido?" 
; Ejemplo en Scheme ( use-modules ( srfi srfi-13 )) ( string-downcase "Wiki significa rápido?" ) ; "¿wiki significa rápido?"    
/* Ejemplo en C */ #include <ctype.h> #include <stdio.h> int main ( void ) { char string [] = "¿Wiki significa rápido?" ; int i ; for ( i = 0 ; i < sizeof ( string ) - 1 ; ++ i ) { /* transformar caracteres en su lugar, uno por uno */ string [ i ] = tolower ( string [ i ]); } puts ( string ); /* "¿Wiki significa rápido?" */ return 0 ; }                              
# Ejemplo en Raku "¿Wiki significa rápido?" . lc ; # "¿wiki significa rápido?"


medio

ver #substring


dividir

# Ejemplos en Python "Huevos de spam, spam, spam y jamón" .partition ( 'spam' ) #('Huevos de spam', 'spam', 'spam y jamón') " Huevos de spam, spam, spam y jamón" .partition ( ' X' ) #('Huevos de spam, spam, spam y jamón', "", "")  
# Ejemplos en Perl 5 / Raku split /(spam)/ , 'Huevos de spam, spam, spam y jamón' , 2 ; # ('Huevos de spam ', 'spam', ' spam y jamón'); split /(X)/ , 'Huevos de spam, spam, spam y jamón' , 2 ; # ('Huevos de spam, spam, spam y jamón');        


reemplazar

// Ejemplos en C# "effffff" . Reemplazar ( "f" , "jump" ); // devuelve "ejumpjumpjumpjumpjumpjump" "blah" . Reemplazar ( "z" , "y" ); // devuelve "blah"    
// Ejemplos en Java "effffff" . replace ( "f" , "jump" ); // devuelve "ejumpjumpjumpjumpjumpjump" "effffff" . replaceAll ( "f*" , "jump" ); // devuelve "ejump"    
// Ejemplos  en  Raku "effffff" . subst ( "f" , "jump" , : g ); # devuelve "ejumpjumpjumpjumpjumpjump" "blah" . subst ( "z" , "y" , : g ); # devuelve "blah"
' Ejemplos en Visual Basic Reemplazar ( "effffff" , "f" , "jump" ) ' devuelve "ejumpjumpjumpjumpjumpjump" Reemplazar ( "blah" , "z" , "y" ) ' devuelve "blah"      
# Ejemplos en Windows PowerShell "effffff"  -replace  "f" ,  "jump"  # devuelve "ejumpjumpjumpjumpjumpjump" "effffff"  -replace  "f*" ,  "jump"  # devuelve "ejump"

contrarrestar

" Ejemplo en Smalltalk " 'hola'  invertido  " devuelve 'olleh' "
# Ejemplo en Perl 5 que invierte "hola" # devuelve "olleh"  
# Ejemplo en Raku "hola" . flip  # devuelve "olleh"
# Ejemplo en Python "hola" [:: - 1 ]  # devuelve "olleh"
; Ejemplo en Scheme ( use-modules ( srfi srfi-13 )) ( string-reverse "hola" ) ; devuelve "olleh"    

encontrar

; Ejemplos en Common Lisp ( buscar "e" "Hola amigo" :from-end t ) ; devuelve 9 ( buscar "z" "palabra" :from-end t ) ; devuelve NIL          
// Ejemplos en C# "Hola amigo" . LastIndexOf ( "e" ); // devuelve 9 "Hola amigo" . LastIndexOf ( "e" , 4 ); // devuelve 1 "palabra" . LastIndexOf ( "z" ); // devuelve -1    
# Ejemplos en Perl 5 rindex ( "Hola amigo" , "e" ); # devuelve 9 rindex ( "Hola amigo" , "e" , 4 ); # devuelve 1 rindex ( "palabra" , "z" ); # devuelve -1       
# Ejemplos en Raku "Hola amigo" . rindex ( "e" ); # devuelve 9 "Hola amigo" . rindex ( "e" , 4 ); # devuelve 1 "palabra" . rindex ( 'z' ); # devuelve Nil
' Ejemplos en Visual Basic InStrRev ( "Hola amigo" , "e" ) ' devuelve 10 InStrRev ( 5 , "Hola amigo" , "e" ) ' devuelve 2 InStrRev ( "word" , "z" ) ' devuelve 0       


bien

// Ejemplos en Java; extrae los 4 caracteres más a la derecha String str = "CarDoor" ; str . substring ( str . length () - 4 ); // devuelve 'Door'    
# Ejemplos en Raku "abcde" . substr (*- 3 ); # devuelve "cde" "abcde" . substr (*- 8 ); # error 'fuera de rango'
/* Ejemplos en Rexx */ derecha ( "abcde" , 3 ) /* devuelve "cde" */ derecha ( "abcde" , 8 ) /* devuelve " abcde" */ derecha ( "abcde" , 8 , "*" ) /* devuelve "***abcde" */       
; Ejemplos en Scheme ( use-modules ( srfi srfi-13 )) ( string-take-right "abcde" , 3 ) ; devuelve "cde" ( string-take-right "abcde" , 8 ) ; error        
' Ejemplos en Visual Basic Derecha ( "sandroguidi" , 3 ) ' devuelve "idi" Derecha ( "sandroguidi" , 100 ) ' devuelve "sandroguidi"    


partición

# Ejemplos en Python "Huevos de spam, spam, spam y jamón" . rpartition ( 'spam' )  ### ('Huevos de spam, spam ', 'spam', ' y jamón') "Huevos de spam, spam, spam y jamón" . rpartition ( 'X' )  ### ("", "", 'Huevos de spam, spam, spam y jamón')

rebanada

ver #substring


dividir

// Ejemplo en C# "abc,defgh,ijk" . Split ( ',' ); // {"abc", "defgh", "ijk"} "abc,defgh;ijk" . Split ( ',' , ';' ); // {"abc", "defgh", "ijk"}   
% Ejemplo en cadena Erlang : tokens ( "abc;defgh;ijk" , ";" ). % ["abc", "defgh", "ijk"]  
// Ejemplos en Java "abc,defgh,ijk" .split ( "," ); // {"abc", "defgh", "ijk"} " abc ,defgh;ijk" .split ( " ,|;" ); // {"abc", "defgh", "ijk"}  
{ Ejemplo en Pascal } var lStrings : TStringList ; lStr : cadena ; begin lStrings := TStringList . Create ; lStrings . Delimiter := ',' ; lStrings . DelimitedText := 'abc,defgh,ijk' ; lStr := lStrings . Strings [ 0 ] ; // 'abc' lStr := lStrings . Strings [ 1 ] ; // 'defgh' lStr := lStrings . Strings [ 2 ] ; // 'ijk' end ;                         
# Ejemplos en Perl 5 split ( /spam/ , 'Huevos de spam, spam, spam y jamón' ); # ('Huevos de spam ', ' ', ' y jamón') split ( /X/ , 'Huevos de spam, spam, spam y jamón' ); # ('Huevos de spam, spam, spam y jamón')    
# Ejemplos en Raku 'Huevos de spam, spam, spam y jamón' . split ( /spam/ ); # (Huevos de spam y jamón) split ( /X/ , 'Huevos de spam, spam, spam y jamón' ); # (Huevos de spam, spam, spam y jamón)


sprintf

ver #Formato

banda

ver #recortar


cadena

ver #Comparar (resultado entero)


subcadena

// Ejemplos en C# "abc" . Substring ( 1 , 1 ): // devuelve "b" "abc" . Substring ( 1 , 2 ); // devuelve "bc" "abc" . Substring ( 1 , 6 ); // error      
;; Ejemplos en Common Lisp ( subseq "abc" 1 2 ) ; devuelve "b" ( subseq "abc" 2 ) ; devuelve "c"       
% Ejemplos en Erlang cadena : substr ( "abc" , 2 , 1 ). % devuelve "b" cadena : substr ( "abc" , 2 ). % devuelve "bc"     
# Ejemplos en Perl 5 substr ( "abc" , 1 , 1 ); # devuelve "b" substr ( "abc" , 1 ); # devuelve "bc"     
# Ejemplos en Raku "abc" . substr ( 1 , 1 ); # devuelve "b" "abc" . substr ( 1 ); # devuelve "bc"
# Ejemplos en Python "abc" [ 1 : 2 ]  # devuelve "b" "abc" [ 1 : 3 ]  # devuelve "bc"
/* Ejemplos en Rexx */ substr ( "abc" , 2 , 1 ) /* devuelve "b" */ substr ( "abc" , 2 ) /* devuelve "bc" */ substr ( "abc" , 2 , 6 ) /* devuelve "bc " */ substr ( "abc" , 2 , 6 , "*" ) /* devuelve "bc****" */            


Mayúsculas

// Ejemplo en C# "¿Wiki significa rápido?" . ToUpper (); // "¿WIKI SIGNIFICA RÁPIDO?" 
# Ejemplo en Perl 5 uc ( "¿Wiki significa rápido?" ); # "¿WIKI SIGNIFICA RÁPIDO?" 
# Ejemplo en Raku uc ( "¿Wiki significa rápido?" ); # "¿WIKI SIGNIFICA RÁPIDO?" "¿Wiki significa rápido?" . uc ; # "¿WIKI SIGNIFICA RÁPIDO?"
/* Ejemplo en Rexx */ translate ( "¿Wiki significa rápido?" ) /* "¿WIKI SIGNIFICA RÁPIDO?" */ /* Ejemplo n.° 2 */
A = 'Este es un ejemplo'.  A
MAYÚSCULA /* "ESTE ES UN EJEMPLO." */ /* Ejemplo n.° 3 */
A = 'upper usando la función de traducción'.
Traducir  UPPER  VAR  A  Z /* Z="UPPER USANDO LA FUNCIÓN DE TRADUCCIÓN". */ 
; Ejemplo en Scheme ( use-modules ( srfi srfi-13 )) ( string-upcase "¿Wiki significa rápido?" ) ; "¿WIKI SIGNIFICA RÁPIDO?"    
' Ejemplo en Visual Basic UCase ( "¿Wiki significa rápido?" ) ' "¿WIKI SIGNIFICA RÁPIDO?" 

recortar

trimo stripse utiliza para eliminar espacios en blanco del principio, del final o de ambos, de una cadena.

Otros idiomas

En los idiomas que no tienen una función de recorte incorporada, suele ser sencillo crear una función personalizada que realice la misma tarea.

APL

APL puede utilizar expresiones regulares directamente:

Recortar '^ +| +$' ⎕R ''

Como alternativa, un enfoque funcional que combina máscaras booleanas que filtran los espacios iniciales y finales:

Recortar { /⍨ ( \ ⌽∨ \∘ ) ' ' }

O invertir y eliminar los espacios iniciales, dos veces:

Recortar { ( \ ' ' ) / } 2

AWK

En AWK , se pueden usar expresiones regulares para recortar:

 ltrim ( v )  =  gsub ( /^[ \t]+/ ,  "" ,  v )  rtrim ( v )  =  gsub ( /[ \t]+$/ ,  "" ,  v )  trim ( v )  =  ltrim ( v );  recortar ( v )

o:

 función  ltrim ( s )  {  sub ( /^[\t]+/ ,  "" ,  s );  devuelve  s  }  función  rtrim ( s )  {  sub ( /[\t]+$/ ,  "" ,  s );  devuelve  s  }  función  trim ( s )  {  devuelve  rtrim ( ltrim ( s ));  }

C/C++

No existe una función de recorte estándar en C o C++. La mayoría de las bibliotecas de cadenas disponibles [55] para C contienen código que implementa el recorte o funciones que facilitan significativamente una implementación eficiente. La función también se ha denominado EatWhitespace en algunas bibliotecas de C no estándar.

En C, los programadores a menudo combinan ltrim y rtrim para implementar trim:

#include <cadena.h> #include <ctype.h>  void rtrim ( char * str ) { char * s ; s = str + strlen ( str ); mientras ( --s >= str ) { si ( ! isspace ( * s ) ) romper ; * s = 0 ; } }                     void ltrim ( char * str ) { tamaño_t n ; n = 0 ; mientras ( str [ n ] != '\0' && isspace (( unsigned char ) str [ n ])) { n ++ ; } memmove ( str , str + n , strlen ( str ) - n + 1 ); }                           void trim ( char * str ) { rtrim ( str ); ltrim ( str ); }    

La biblioteca C++ de código abierto Boost tiene varias variantes de ajuste, incluida una estándar: [56]

#include <boost/algoritmo/cadena/trim.hpp> recortado = boost :: algoritmo :: trim_copy ( "cadena" );   

Con la función boost nombrada simplemente, trimla secuencia de entrada se modifica en el lugar y no devuelve ningún resultado.

Otra biblioteca C++ de código abierto , Qt , tiene varias variantes de ajuste, incluida una estándar: [57]

#include <QString> recortado = s . recortado ();   

El núcleo Linux también incluye una función strip, strstrip()desde la versión 2.6.18-rc1, que recorta la cadena "en su lugar". Desde la versión 2.6.33-rc1, el núcleo utiliza strim()en lugar de strstrip()para evitar falsas advertencias. [58]

Haskell

Un algoritmo de recorte en Haskell :

 importar Data.Char ( isSpace ) trim :: String - > String trim = f.f donde f = reverse.dropWhile isSpace                   

Puede interpretarse de la siguiente manera: f elimina el espacio en blanco anterior e invierte la cadena. Luego, f se aplica nuevamente a su propia salida. Tenga en cuenta que la firma de tipo (la segunda línea) es opcional.

Yo

El algoritmo de recorte en J es una descripción funcional :

 recortar =. #~ [: ( +./\ *. +./\. ) ' ' &~:       

Es decir: filtrar ( #~) para caracteres que no sean espacios ( ' '&~:) entre espacios iniciales ( +./\) y ( *.) finales ( +./\.).

JavaScript

Hay una función de recorte incorporada en JavaScript 1.8.1 (Firefox 3.5 y posteriores) y en el estándar ECMAScript 5. En versiones anteriores, se puede agregar al prototipo del objeto String de la siguiente manera:

Cadena . prototipo . trim = función () { devolver esto . reemplazar ( /^\s+/g , "" ). reemplazar ( /\s+$/g , "" ); };       

Perl

Perl 5 no tiene una función de recorte incorporada. Sin embargo, la funcionalidad se logra comúnmente mediante expresiones regulares .

Ejemplo:

$string =~ s/^\s+//; # remove leading whitespace$string =~ s/\s+$//; # remove trailing whitespace

or:

$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace

These examples modify the value of the original variable $string.

Also available for Perl is StripLTSpace in String::Strip from CPAN.

There are, however, two functions that are commonly used to strip whitespace from the end of strings, chomp and chop:

In Raku, the upcoming sister language of Perl, strings have a trim method.

Example:

$string = $string.trim; # remove leading and trailing whitespace$string .= trim; # same thing

Tcl

The Tcl string command has three relevant subcommands: trim, trimright and trimleft. For each of those commands, an additional argument may be specified: a string that represents a set of characters to remove—the default is whitespace (space, tab, newline, carriage return).

Example of trimming vowels:

set string onomatopoeiaset trimmed [string trim $string aeiou] ;# result is nomatopset r_trimmed [string trimright $string aeiou] ;# result is onomatopset l_trimmed [string trimleft $string aeiou] ;# result is nomatopoeia

XSLT

XSLT includes the function normalize-space(string) which strips leading and trailing whitespace, in addition to replacing any whitespace sequence (including line breaks) with a single space.

Example:

<xsl:variable name='trimmed'> <xsl:value-of select='normalize-space(string)'/></xsl:variable>

XSLT 2.0 includes regular expressions, providing another mechanism to perform string trimming.

Another XSLT technique for trimming is to utilize the XPath 2.0 substring() function.

References

  1. ^ a b c d e the index can be negative, which then indicates the number of places before the end of the string.
  2. ^ In Rust, the str::chars method iterates over code points and the std::iter::Iterator::nth method on iterators returns the zero-indexed nth value from the iterator, or None.
  3. ^ the index can not be negative, use *-N where N indicate the number of places before the end of the string.
  4. ^ In C++, the overloaded operator<=> method on a string returns a std::strong_ordering object (otherwise std::weak_ordering): less, equal (same as equivalent), or greater.
  5. ^ returns LESS, EQUAL, or GREATER
  6. ^ returns LT, EQ, or GT
  7. ^ returns .TRUE. or .FALSE.. These functions are based on the ASCII collating sequence.
  8. ^ a b IBM extension.
  9. ^ In Rust, the Ord::cmp method on a string returns an Ordering: Less, Equal, or Greater.
  10. ^ a b c d e f In Rust, the operators == and != and the methods eq, ne are implemented by the PartialEq trait, and the operators <, >, <=, >= and the methods lt, gt, le, ge are implemented by the PartialOrd trait.
  11. ^ The operators use the compiler's default collating sequence.
  12. ^ modifies string1, which must have enough space to store the result
  13. ^ In Rust, the + operator is implemented by the Add trait.
  14. ^ See the str::contains method.
  15. ^ See the std::basic_string::contains method.
  16. ^ a b startpos is IBM extension.
  17. ^ a b See the str::find method.
  18. ^ startpos is IBM extension.
  19. ^ "scan in Fortran Wiki". Fortranwiki.org. 2009-04-30. Retrieved 2013-08-18.
  20. ^ "verify in Fortran Wiki". Fortranwiki.org. 2012-05-03. Retrieved 2013-08-18.
  21. ^ formatstring must be a fixed literal at compile time for it to have the correct type.
  22. ^ See std::format, which is imported by the Rust prelude so that it can be used under the name format.
  23. ^ See the slice::join method.
  24. ^ if n is larger than the length of the string, then in Debug mode ArrayRangeException is thrown, in Release mode, the behaviour is unspecified.
  25. ^ if n is larger than the length of the string, Java will throw an IndexOutOfBoundsException
  26. ^ a b if n is larger than length of string, raises Invalid_argument
  27. ^ a b if n is larger than length of string, throw the message "StringTake::take:"
  28. ^ a b c In Rust, strings are indexed in terms of byte offsets and there is a runtime panic if the index is out of bounds or if it would result in invalid UTF-8. A &str (string reference) can be indexed by various types of ranges, including Range (0..n), RangeFrom (n..), and RangeTo (..n) because they all implement the SliceIndex trait with str being the type being indexed. The str::get method is the non-panicking way to index. It returns None in the cases in which indexing would panic.
  29. ^ Ruby lacks Unicode support
  30. ^ See the str::len method.
  31. ^ In Rust, the str::chars method iterates over code points and the std::iter::Iterator::count method on iterators consumes the iterator and returns the total number of elements in the iterator.
  32. ^ operates on one character
  33. ^ a b The transform function exists in the std:: namespace. You must include the <algorithm> header file to use it. The tolower and toupper functions are in the global namespace, obtained by the <ctype.h> header file. The std::tolower and std::toupper names are overloaded and cannot be passed to std::transform without a cast to resolve a function overloading ambiguity, e.g. std::transform(string.begin(), string.end(), result.begin(), (int (*)(int))std::tolower);
  34. ^ std::string only, result is stored in string result which is at least as long as string, and may or may not be string itself
  35. ^ a b only ASCII characters as Ruby lacks Unicode support
  36. ^ See the str::to_lowercase method.
  37. ^ See the str::replace method.
  38. ^ a b c d e The "find" string in this construct is interpreted as a regular expression. Certain characters have special meaning in regular expressions. If you want to find a string literally, you need to quote the special characters.
  39. ^ third parameter is non-standard
  40. ^ In Rust, the str::chars method iterates over code points, the std::iter::Iterator::rev method on reversible iterators (std::iter::DoubleEndedIterator) creates a reversed iterator, and the std::iter::Iterator::collect method consumes the iterator and creates a collection (which here is specified as a String with the turbofish syntax) from the iterator's elements.
  41. ^ See the str::rfind method.
  42. ^ "Annotated ES5". Es5.github.com. Archived from the original on 2013-01-28. Retrieved 2013-08-18.
  43. ^ if n is larger than length of string, then in Debug mode ArrayRangeException is thrown, and unspecified behaviour in Release mode
  44. ^ See the str::split and str::rsplit methods.
  45. ^ a b c d e f g startpos can be negative, which indicates to start that number of places before the end of the string.
  46. ^ ab numCharspuede ser negativo, lo que indica que debe terminar ese número de lugares antes del final de la cadena.
  47. ^ nostartpos puede ser negativo, utilice * - startpos para indicar que se debe iniciar ese número de lugares antes del final de la cadena.
  48. ^ nonumChars puede ser negativo, utilice * - numChars para indicar que debe terminar ese número de lugares antes del final de la cadena.
  49. ^ abcde endpospuede ser negativo, lo que indica que debe terminar ese número de lugares antes del final de la cadena.
  50. ^ std::string solamente, el resultado se almacena en la cadena resultado que es al menos tan larga como la cadena y puede o no ser la cadena misma
  51. ^ "mayúsculas - Lenguaje de programación Kotlin". Kotlin . Consultado el 9 de noviembre de 2024 .
  52. ^ En Rust, el método str::to_uppercase devuelve una cadena recién asignada con todos los caracteres en minúscula cambiados a mayúsculas siguiendo las reglas Unicode.
  53. ^ En Rust, el método str::trim devuelve una referencia al original &str.
  54. ^ "Recortar - GNU Pascal priručnik". Gnu-pascal.de . Consultado el 24 de agosto de 2013 .
  55. ^ "Comparación de bibliotecas de cadenas". And.org . Consultado el 24 de agosto de 2013 .
  56. ^ "Uso – 1.54.0". Boost.org. 22 de mayo de 2013. Consultado el 24 de agosto de 2013 .
  57. ^ [1] Archivado el 2 de agosto de 2009 en Wayback Machine.
  58. ^ dankamongmen. "sprezzos-kernel-packaging/changelog en master · dankamongmen/sprezzos-kernel-packaging · GitHub". Github.com . Consultado el 29 de mayo de 2016 .