Java 类似于 perl 的 trim 函数

Java like trim function for perl

Perl 有 Java like trim 函数吗

我正在寻找 Perl 中的函数,它删除 0x20 以下的所有前导和尾随字符,例如 Java。

在对以下字符串调用函数后。

my $string = "\N{U+0020}\N{U+001f}\N{U+001e}\N{U+001d}\N{U+001c}\N{U+001b}\N{U+001a}\N{U+0019}\N{U+0018}\N{U+0017}\N{U+0016}\N{U+0015}\N{U+0014}\N{U+0013}\N{U+0012}\N{U+0011}Hello Moto\N{U+0010}\N{U+000f}\N{U+000e}\N{U+000d}\N{U+000c}\N{U+000b}\N{U+000a}\N{U+0009}\N{U+0008}\N{U+0007}\N{U+0006}\N{U+0005}\N{U+0004}\N{U+0003}\N{U+0002}\N{U+0001}\N{U+0000}";

只剩下"Hello Moto"。

String::Util 中的 trim 仅删除第一个空格 (\N{U+0020})。

传统的 ASCII 方式是使用

$string =~ s/^\s+|\s+$//g;

(即从字符串的开头(^)和结尾($)删除空格(\s)。

U+001f 不是空格,它是一个控件。您可以在 \p:

的正则表达式中使用 Unicode 属性
my $drop = qr/[\p{Space}\p{Cc}]+/;
$whitespace =~ s/^$drop|$drop$//g;

或者,更详细一点:

$drop = qr/[\p{White_Space}\p{Cntrl}]+/;

您或许应该更改变量的名称。