如何在Perl中替换空格

3
chomp($myString);
$myString =~ s/\///g;

我可以用这两个替换它们吗?

$myString =~ s/\s//g;

有什么不同吗?请解释一下。


3
不行,它们的功能完全不同。你想做什么? - Brian Roach
chomp() 只有在默认情况下才会删除换行符。chomp() 删除的内容取决于 $/ 变量的值。 - tadmc
3个回答

10
你的第一行代码将删除 $myString 末尾的换行符(如果存在),然后删除所有“/”字符。第二行代码将删除所有空白字符。这是一个笔误吗?
也许你想知道如何替换这个:
chomp($myString);
$myString =~ s/\s//g;

使用以下代码:

$myString =~ s/\s//g;
如果这是问题的话,那么是的。由于换行符被计算为空格,第二个代码示例可以完成上述两行代码的工作。

啊哈..所以我可以写成 $myString =~ s/\s//g; $myString =~ s////g;而不是写成全部三个 chomp($myString); $myString =~ s////g; $myString =~ s/\s//g;我的理解正确吗? - DarRay
@DarRay:是的,除非您已更改默认输入记录分隔符。 - ysth

1

来自 perldoc chomp

chomp 用于在输入记录的末尾删除换行符,以防止最后一条记录缺少换行符。

当处于段落模式 ($/ = "") 时,它会从字符串中删除所有尾随的换行符。当处于 slurp 模式 ($/ = undef) 或固定长度记录模式 ($/ 是整数或类似物的引用,请参见 perlvar) 时,chomp() 不会删除任何内容。

您可以像这样从字符串中删除前导和尾随的空格:

$string =~ s{^\s+|\s+$}{}g

0

Chomp函数可以去除字符串末尾的换行符,但不会删除空格。典型的修剪函数使用以下两个替换行:

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

第一行代码可以去掉字符串前面的空格,而第二行则可以去掉字符串后面的空格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接