免费注册 查看新帖 |

Chinaunix

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

将字符串拆分成字符数组 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-30 11:57 |只看该作者 |倒序浏览
在C语言中,用一个指针表示一个字符串,直接可以按照数组的访问方式,访问每个字符。
  1. *text = char[]
  2. text[0] = 'a'
复制代码
在Perl语言中,就需要复杂的运算了。
  1. my @array = split //, $text;
复制代码
有没有能在底层表示为C的用法的Perl运算符?

论坛徽章:
0
2 [报告]
发表于 2012-12-30 14:44 |只看该作者
Perlvim 发表于 2012-12-30 11:57
在C语言中,用一个指针表示一个字符串,直接可以按照数组的访问方式,访问每个字符。在Perl语言中,就需要复 ...


类似的ruby可以

>> x="world"
=> "world"
>> x[0]
=> 119

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2012-12-30 15:06 |只看该作者
substr 可以么

论坛徽章:
0
4 [报告]
发表于 2012-12-30 15:12 |只看该作者
Python也可以:wink:
  1. #!/usr/bin/python

  2. var1 = 'Hello World!'
  3. var2 = "Python Programming"

  4. print "var1[0]: ", var1[0]
  5. print "var2[1:5]: ", var2[1:5]
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-12-30 23:40 |只看该作者
目的是什么?

论坛徽章:
0
6 [报告]
发表于 2012-12-31 08:44 |只看该作者
本帖最后由 Perlvim 于 2012-12-31 08:45 编辑

在Python 中,可以很方便的使用,在Ruby中,接口也很简单。
在Perl中,substr是一个很容易实现的底层函数,parrot 的PIR语言中,就有这个函数。

我的目的是想测试这个在C中或底层语言中非常基本的操作,在Perl中的实现,了解效率和速度,找到最接近底层类似指针调用的算法。

高级语言为了解决高级的问题,拥有了很多抽象算法能力,但慢慢丧失了基本的能力。

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
7 [报告]
发表于 2012-12-31 12:04 |只看该作者
Perlvim 发表于 2012-12-31 08:44
在Python 中,可以很方便的使用,在Ruby中,接口也很简单。
在Perl中,substr是一个很容易实现的底层函数, ...

Python 和 Ruby 都是面向对象语言,对 String 进行 index 的操作其实也是通过方法来实现的,比如在 Ruby 中 [] 其实是 slice() 方法的别名。没记错的话,CPAN 上也有将 Perl 的基本数据类型当作对象来用的模块,它应该提供对 String 进行 index 的这种类似的语法糖。不过,底层上,substr 还是很高效的,至少比 使用 split 要来得高效,因为 SV 的字符串 slot 里存的就是 C 的字符数组(C 是因为没有真正的字符串,只有字符数组,所以可以直接进行 index 操作,因为它是数组),然后有指示这个字符数组开始的指针,所以 substr 的实现肯定在底层只用进行指针操作就可以了(这所以说肯定,是因为我自己没去读代码验证,因为也没必要去验证,Perl 就是 Perl,Perl 大牛们怎么用它我们就怎么用它,我重来都没想过把 Perl 当成 Ruby/Python 甚至 C 来用。感兴趣的人可以去读 sv.c 里 substr 到底是怎么实现的)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP