免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: longbow0
打印 上一主题 下一主题

怎么判断一个字符串是否是单一字符的重复? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
21 [报告]
发表于 2011-01-07 17:53 |只看该作者
本帖最后由 flw 于 2011-01-10 10:45 编辑

print "Yes" if scalar %hash=~/^1/;
有 BUG。改成数值比较就可以了。
print "Yes" if keys %hash == 1;

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
22 [报告]
发表于 2011-01-07 18:10 |只看该作者
学习了, hash 在 number context 下原来还有这个意义

论坛徽章:
0
23 [报告]
发表于 2011-01-07 20:39 |只看该作者
a{2,}

论坛徽章:
0
24 [报告]
发表于 2011-01-10 09:50 |只看该作者
print "Yes" if scalar %hash=~/^1/;
有 BUG。改成数值比较就可以了。
print "Yes" if %hash == 1;
flw 发表于 2011-01-07 17:53



    感谢版主点拨。本来也是想用scalar进行上下文强制转换,以为结果会是1,但运行一看是1/8,于是就不得已用了正则。没有试%hash的上下文。
但版主说有bug是指?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2011-01-10 10:02 |只看该作者
感谢版主点拨。本来也是想用scalar进行上下文强制转换,以为结果会是1,但运行一看是1/8,于是就 ...
x9x9 发表于 2011-01-10 09:50

你只判断了 1 开头。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
26 [报告]
发表于 2011-01-10 10:14 |只看该作者
好歹你也应该判断 /^1\// 否则以1开头的整数多着呢,出于效率考虑 hash 不可能只分配一个 slot

论坛徽章:
0
27 [报告]
发表于 2011-01-10 10:45 |只看该作者
正则的力量是强大的!!!!!!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
28 [报告]
发表于 2011-01-10 10:45 |只看该作者
学习了, hash 在 number context 下原来还有这个意义
zhlong8 发表于 2011-01-07 18:10

sorry,我本意是想写 keys %hash 的,已更正。
%hash 在 scalar context 下的值应该是不分数值上下文或非数值上下文的。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
29 [报告]
发表于 2011-01-10 10:48 |只看该作者
本帖最后由 zhlong8 于 2011-01-10 10:52 编辑

回复 28# flw


    这个用法的确在文档中没见过,不过真有效

    perl -e "%a = 1..10; print (%a+0)

    明白了,那个是 '5/10' 转化为数字的时候成 5 了,尴尬……

    就好像昨天那个没见过的 $# 用在 array_ref 上的应用一样,也是没见过

论坛徽章:
0
30 [报告]
发表于 2011-01-13 18:06 |只看该作者
  1. my $str = 'AAAAAAAAAAA';
  2. my $b;
  3. map {$b |= $_;}(split//,$str);
  4. print "Y" if substr($str, 0, 1) eq $b;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP