免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6484 | 回复: 10
打印 上一主题 下一主题

如何去除一字符窜数组中每个元素的首尾空格? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-07 19:01 |只看该作者 |倒序浏览
写个foreach循环每个元素处理后生成一个新的数组的方法我会实现.
想提高一下, 有没有简便的方法,比如一句话就能搞定的. 而且不生成新的数组?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2012-03-07 19:43 |只看该作者
再具体化一点.
想写个subroutine 进行这样的处理.
调用时把数组的引用传给这个subroutine, subroutine执行完后, 该数组中的每个元素的首尾空格就没有了.
希望能用诸如grep map的方式操作数组.

论坛徽章:
0
3 [报告]
发表于 2012-03-07 20:13 |只看该作者
my @new_str = map { chomp; $_ } @old_str;

论坛徽章:
0
4 [报告]
发表于 2012-03-07 20:37 |只看该作者
sellie 发表于 2012-03-07 19:01
写个foreach循环每个元素处理后生成一个新的数组的方法我会实现.
想提高一下, 有没有简便的方法,比如一句话 ...


foreach 不用生产新数组
  1. s/^\s+(.*?)\s+$/$1/ foreach @array;
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-03-07 21:51 |只看该作者
sellie 发表于 2012-03-07 19:01
写个foreach循环每个元素处理后生成一个新的数组的方法我会实现.
想提高一下, 有没有简便的方法,比如一句话 ...


map就可以吧

C:\Perl>perl -e "@a=(' a ',' b ',' c ');@b=map{s/^\s+|\s+$//g;$_} @a; print @b"
abc

论坛徽章:
0
6 [报告]
发表于 2012-03-07 21:54 |只看该作者
map正解

论坛徽章:
0
7 [报告]
发表于 2012-03-15 14:50 |只看该作者
xfoucs 发表于 2012-03-07 20:37
foreach 不用生产新数组



这个给力,最切题的答案.

论坛徽章:
0
8 [报告]
发表于 2012-03-15 14:52 |只看该作者
回复 5# 兰花仙子

产生了新的数组. 不过这样的写法更容易读懂.
谢谢.


   

论坛徽章:
0
9 [报告]
发表于 2012-03-15 15:34 |只看该作者
自己继续学习总结如下.供大家参考.

****不产生新的数组*****
my @aaa = ( ' a', 'b ', ' c ', 'd');
print @aaa,"\n";

s/^\s*(.+?)\s*$/$1/ foreach @aaa;

print @aaa,"\n";

或可
for (@aaa) {  s/^\s*(.+?)\s*$/$1/ }

或可
map{ s/^\s+|\s+$//g } @aaa;





****产生新的数组*****
my @aaa = ( ' a', 'b ', ' c ', 'd');
print @aaa,"\n";

my @bbb=map{s/^\s+|\s+$//g;$_} @aaa;

print @bbb,"\n";


或可
my $tmp;
my @bbb=map{ ($tmp=$_) =~ s/^\s+|\s+$//g; $tmp } @aaa;

论坛徽章:
0
10 [报告]
发表于 2012-03-15 15:46 |只看该作者
本帖最后由 Perl_Er 于 2012-03-15 15:47 编辑
  1. my @array = ("a ", " b", " c ");

  2. map { s/^\s*|\s*$//g } @array;

  3. print Dumper \@array;
复制代码
回复 1# sellie
  1. $VAR1 = [
  2.           'a',
  3.           'b',
  4.           'c'
  5.         ];
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP