免费注册 查看新帖 |

Chinaunix

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

[已解决]如何用perl对单一字符串进行计数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-30 16:13 |只看该作者 |倒序浏览
本帖最后由 tonyliuy 于 2015-10-09 11:38 编辑

比如有一列字符串是ABFBAADFGRGRGFGDHRTSYDRYSFSDFSYRRETDFGSRSGFGSRGSDF很长一段没有空格的字符串,怎样查找其中A出现的次数?

论坛徽章:
0
2 [报告]
发表于 2015-09-30 16:41 |只看该作者
  1. $str = "ABFBAADFGRGRGFGDHRTSYDRYSFSDFSYRRETDFGSRSGFGSRGSDF";
  2. map { $cnt{$_}++ } split('', $str);
  3. print "A: ", $cnt{'A'}, "\n";
复制代码
测试:
  1. C:\Users\Administrator\Desktop>tinyperl foo.pl
  2. A: 3
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2015-09-30 17:06 |只看该作者
回复 1# tonyliuy


    $cnt = ($str =~ s/A/$&/g)

论坛徽章:
0
4 [报告]
发表于 2015-09-30 17:57 |只看该作者
回复 2# 伍式南
如果想要求A和B的计数和呢?直接$cnt{'A'||'B'}可以吗?


   

论坛徽章:
0
5 [报告]
发表于 2015-09-30 17:59 |只看该作者
回复 3# yinyuemi
同上一个问题,如果求A与B的计数和,s///正则匹配可以用逻辑或连接吗?

   

论坛徽章:
0
6 [报告]
发表于 2015-09-30 20:05 |只看该作者
本帖最后由 伍式南 于 2015-09-30 20:06 编辑

回复 4# tonyliuy


    求A和B的计数和,可以这样:
    $cnt{A} + $cnt{B}

    直接用逻辑符号,应该是不行的.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2015-09-30 20:27 |只看该作者
回复 1# tonyliuy


    这东西通常的做法是这样的:

my $cnt = () = $str =~ m/A|B/g;

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2015-09-30 22:06 |只看该作者
回复 7# MMMIX
大神, 能问一下 "()" 在此处的含义吗?

   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2015-09-30 22:40 |只看该作者
本帖最后由 MMMIX 于 2015-10-01 00:51 编辑

回复 8# sunzhiguolu


    给 m// 提供 list context 呀

http://bbs.chinaunix.net/thread-4188410-1-2.html

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
10 [报告]
发表于 2015-09-30 23:05 |只看该作者
回复 9# MMMIX
您能给个简单的解释吗, 注释真的有点少. 要是一两句话说不清, 给我个可以参考的简单点的文章链接也行. (要是中文就更好了)

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP