Hay un built-en la función de ajuste inicial y final en los espacios en blanco tal que trim(" hello world ") eq "hello world"?

  • FYI: cadena de igualdad en Perl es probado por el operador eq.
  • Un poco de aclaración en todas las respuestas que obtuve: s/^\s+|\s+$//g; vs s/^\s*//; s/\s*$//; El último es el (muy ligeramente) más idiomáticas manera de hacer esto, ya que a partir de la expresión regular que el motor es más rápido que el de la alternancia, en este caso. Usted puede leer más acerca de esto en Jeffrey Friedl la Masterización de Expresiones Regulares. (A menos que esto se ha solucionado en algunos de los más nuevos de la versión de Perl, en cuyo caso, por favor alguien me corrija!)
  • Viniendo de un Java y .NETO del fondo, estoy casi sorprendido esto no es incorporado en el lenguaje! GRACIAS A TODOS!
  • algo es: Scalar::Util tiene recorte, y es el núcleo desde 5.7.3 – Que en el año 2002!
  • Hugmeir, esto es incorrecto, ver la respuesta de Éter.
  • Comparación de incluso más funciones: illusori.co.reino unido/perl/2010/03/05/… blog.stevenlevithan.com/archives/faster-trim-javascript

InformationsquelleAutor Landon Kuhn | 2011-01-04

10 Comentarios

  1. 82

    Este es un enfoque usando una expresión regular:

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

    Perl 6 incluirá una función de ajuste:

    $string .= trim;

    Fuente: Wikipedia

    • Espero con esto una vez al mes. Lástima que yo no pueda upvote cada momento.
  2. 80

    Esto está disponible en Cadena::Util con el trim método:

    nota del Editor: String::Util no es un módulo principal, pero se puede instalar desde CPAN con [sudo] cpan String::Util.

    use String::Util 'trim';
    my $str = "  hello  ";
    $str = trim($str);
    print "string is now: '$str'\n";

    imprime:

    cadena de ahora es ‘hola’

    Sin embargo es bastante fácil de hacer usted mismo:

    $str =~ s/^\s+//;
    $str =~ s/\s+$//;
    • ni va a ser nunca. Pero esto no es relevante, ya que cada uno debe usar módulos de CPAN.
    • ¿por qué debería el uso de todos los módulos de CPAN? Hace consistencia difícil cuando se utiliza perl de su distribución de linux (debian, redhat, ubuntu), combinado con manual instalado módulos de CPAN. Es mucho mejor si se puede hacer algo en perl usando los módulos que están disponibles como paquetes en la distribución de linux
    • módulos disponibles como paquetes de tu distro de linux son desde CPAN — que han sido envasados. Por lo general, puede solicitar un determinado módulo de ser empaquetadas si todavía no lo ha hecho ya (debian personas son particularmente sensibles y útiles).
    • Sé que son también de CPAN… Sí, en general, puedo solicitar un nuevo paquete para debian, pero no me ayuda para mis instalado debian stable release… por eso prefiero los paquetes de módulos, pero utilizar directamente CPAN si es realmente necesario.
    • Con todo el debido respeto, aprecio mucho saber que este es un no-módulo principal. Este post es hablar sobre el uso de un módulo en lugar de un simple expresión de una línea. Si el módulo es el núcleo, sería mucho más abierto. Es pertinente en este caso.
  3. 26

    No hay en trim función, pero se puede implementar fácilmente su propio uso de una simple sustitución:

    sub trim {
        (my $s = $_[0]) =~ s/^\s+|\s+$//g;
        return $s;
    }

    o el uso de no destructivo de sustitución en Perl 5.14 y más adelante:

    sub trim {
       return $_[0] =~ s/^\s+|\s+$//rg;
    }
  4. 3

    Yo también uso una búsqueda positiva hacia delante para recortar la repetición de los espacios en el interior del texto:

    s/^\s+|\s(?=\s)|\s+$//g
  5. 3

    Para aquellos que están usando Texto: CSV he encontrado este hilo y entonces se dio cuenta, dentro de la CSV módulo que podría despojar a cabo a través de interruptor:

    $csv = Text::CSV->new({allow_whitespace => 1});

    La lógica es al revés en el que si queremos eliminar, a continuación, se establece a 1. Vaya usted a saber. Espero que esto ayude a alguien.

  6. -4

    No, pero usted puede utilizar el s/// la sustitución del operador y la \s espacio en blanco afirmación de obtener el mismo resultado.

    • Que quitar los espacios entre las palabras, no sólo en los extremos de la cadena.
    • depende de cómo lo usa.

Dejar respuesta

Please enter your comment!
Please enter your name here