【问题标题】:Length of string from array Perl always returns 1数组 Perl 中字符串的长度总是返回 1
【发布时间】:2015-05-10 14:58:13
【问题描述】:

我正在尝试获取数组元素的长度(字符串),但我每次都得到 1。
这是我的代码

while (my $line =<$file>) {
  chomp $line;
my @words = split('', $line);
foreach my $element (@words)
{
  print length($element);
}

长度总是返回 1,但与其他变量一起工作正常。
请帮助查找问题。

【问题讨论】:

  • 会的。您正在 foreach 循环内打印长度。

标签: arrays regex string perl


【解决方案1】:

你用过

split('', $line)

这告诉 Perl 将 $line 拆分为单个字符。我认为您打算使用

split(' ', $line)

这告诉 Perl 将 $line 拆分为“单词”(由空格分隔的字符序列)。

【讨论】:

    【解决方案2】:

    split function 中使用正则表达式:

    my @words = split(/\s+/, $line);
    

    \s 表示whitespace+ 出现一次或多次

    【讨论】:

    • 我相信特例 split ' 'split /\s+/ 更适合手头的任务。它们是相同的,只是前者忽略了任何会导致后者返回空前导字段的前导空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2013-05-02
    • 2021-03-05
    相关资源
    最近更新 更多