首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用chomp

如何使用chomp
EN

Stack Overflow用户
提问于 2014-10-31 15:07:56
回答 3查看 441关注 0票数 2

下面我有一个我想要操作的数据列表。我想把这些列分开,重新加入到另一种安排中。

我想用第三个转换数组的最后一个元素,但是我遇到了一个问题。由于数组的最后一个元素在结尾处包含一个行字符,所以当我将其转换为thrid时,它会将所有的东西都踢下来。

代码语言:javascript
复制
while (<>) {
    my @flds = split /,/;
    DO STUFF HERE;
    ETC;
    print join ",", @flds[ 0, 1, 3, 2 ];    # switches 3rd element with last
}

样本数据

代码语言:javascript
复制
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name

我的结果-踢了一条线。

代码语言:javascript
复制
1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name,Hello

*预期成果**

代码语言:javascript
复制
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello

我知道这与chomp有关,但是当我咀嚼第一个或最后一个元素时,所有\n都会被删除。当我对中间的任何东西使用chomp时,什么都不会发生。有人能帮忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-31 15:12:30

chomp从参数中移除尾随换行符。由于您的四个字段中没有一个应该实际包含换行符,所以这可能是您想要进行数据处理的目的。在将行拆分为字段之前,可以使用chomp删除换行符,然后用最后的print语句在每条记录之后添加一条换行符:

代码语言:javascript
复制
while (<>) {
    chomp; # Automatically operates on $_
    my @flds = split /,/;
    DO STUFF HERE;
    ETC;
    print join(",", @flds[0,1,3,2]) . "\n"; # switches 3rd element with last
}
票数 4
EN

Stack Overflow用户

发布于 2014-10-31 15:10:25

代码语言:javascript
复制
while ( <> ) {
    chomp; 
    my @flds = split /,/;
       ... rest of your stuff
 }

while循环中,在处理每一行时,$_被设置为该行的内容。默认情况下,chomp$_进行操作并删除尾随行提要。split也默认使用$_,因此工作正常。

从技术上讲,将发生的是@flds中的最后一个元素,包括行中的尾随\n,例如$flds[3]

票数 0
EN

Stack Overflow用户

发布于 2014-11-05 07:32:22

函数将(通常)删除字符串末尾的任何换行符。我们通常说的原因是,它实际上删除了与当前值$/ (输入记录分隔符)匹配的任何字符,$/默认值为换行符。

示例1.在从文件或用户读取数据时,通常使用chomp()。例如,当从标准输入流(STDIN)读取用户输入时,您将得到包含每一行数据的换行符。在这种情况下,chomp()非常有用,因为您不需要编写正则表达式,也不需要担心它会删除所需的字符。

代码语言:javascript
复制
while (my $text = <STDIN>) {
chomp($text);
print "You entered '$text'\n";
last if ($text eq '');

}

此程序的示例用法和输出如下:

你输入的单词“a word”--你输入的“一些文本”

你输入了'‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26677789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档