设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4194|回复: 22
打印 上一主题 下一主题

[讨论] 简单的字符串转数组示例

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9732
在线时间
3227 小时
注册时间
2011-3-24
帖子
739

开拓者

跳转到指定楼层
1
发表于 2014-6-26 09:34:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. n = "8,20,17"
  2. a = n.split(",")
  3. b = a[0].to_i
  4. c = a[1].to_i
  5. d = a[2].to_i
  6. e = [b,c,d]
  7. p e
复制代码
这样子写比较便于新手看,大体就是把字符串用","分割开并以数组返回,
但其内容是字符串,我用了比较好懂的写法把它们一个一个to_i转成数字再代回了
这个的用途可能比较少,但是呢...还是应该会有人用的吧,
比如读取rmvx备注里你也可以写数组了,因为它读取出来的都是字符串,你可以这样转换它方便使用

点评

是很棒啦,但我的意思是你写的这种肯定没几个菜鸟能看懂  发表于 2014-6-27 13:11
p e = b,c,d = *n.split(",")  发表于 2014-6-27 12:27
>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-6-26 09:40:45 手机端发表。 | 只看该作者
str.split(/\s*,\s*/).map(&:to_i)

点评

正则我一直没看明白···是把str分出去还是什么···好吧我英语不行···  发表于 2014-7-2 12:21
moy
不是人人都愿意去学正则……特别是不打算深入研究的时候  发表于 2014-6-26 10:06
正则表达式~  发表于 2014-6-26 10:02
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2014-7-2 12:21:51 | 只看该作者
如果我要每一个字符都分呢···XP的伤害数值可以一个个分出来···但文字的话···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-7-2 12:31:32 | 只看该作者
chd114 发表于 2014-7-2 12:21
如果我要每一个字符都分呢···XP的伤害数值可以一个个分出来···但文字的话··· ...


RUBY 代码复制
  1. str = 'hello world!'
  2. str.chars #=> ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]


正则表达式看这里:https://rpg.blue/thread-357273-1-1.html
简单使用的话,学个30分钟就好了

点评

效果一样,但是显然chars更加易读不是吗?  发表于 2014-7-2 12:40
为什么我觉得.split(//)更好...  发表于 2014-7-2 12:33
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2014-7-2 12:32:35 | 只看该作者
taroxd 发表于 2014-7-2 12:31
str = 'hello world!'
str.chars # => ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]

这个是全部通用的?那str.split(/\s*,\s*/).map(&:to_i)是什么意思···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

6
发表于 2014-7-2 12:38:08 | 只看该作者
chd114 发表于 2014-7-2 12:32
这个是全部通用的?那str.split(/\s*,\s*/).map(&:to_i)是什么意思···

str.split(/\s*,\s*/) 把str按照逗号分隔,逗号的前后可以有空格(其实空格无所谓,我习惯了而已)
例:
RUBY 代码复制
  1. str = "  123  ,  456, 789  "
  2. array = str.split(/\s*,\s*/) #=> ["  123", "456", "789  "]


array.map(&:to_i) 相当于 array.map {|str| str.to_i }
例:
RUBY 代码复制
  1. ["  123", "456", "789  "].map(&:to_i) #=> [123, 456, 789]


看不懂的话,以后有空可以来看看这个帖子:https://rpg.blue/thread-367517-1-1.html
现在还没有写好就是了=。=
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

7
发表于 2014-7-2 12:43:00 | 只看该作者
本帖最后由 taroxd 于 2014-7-2 12:46 编辑

@Mr.Jin
经测试,chars效率远高于split(//)
chars效率又高一些,又通俗易懂一些,为什么会不如split?
另外只是迭代的话,用each_char会更加舒服

测试代码:
RUBY 代码复制
  1. require 'benchmark'
  2. big = 10000000
  3. string = '*' * big
  4.  
  5. Benchmark.bmbm do |x|
  6.   x.report("split: ") {string.split(//)}
  7.   x.report("chars: ") {string.chars}
  8. end


输出:
  1. Rehearsal -------------------------------------------
  2. split:    4.352000   0.172000   4.524000 (  4.811275)
  3. chars:    0.749000   0.280000   1.029000 (  1.352077)
  4. ---------------------------------- total: 5.553000sec

  5.               user     system      total        real
  6. split:    3.931000   0.078000   4.009000 (  4.231242)
  7. chars:    0.765000   0.047000   0.812000 (  1.063061)
复制代码

点评

Orz了解给跪了  发表于 2014-7-2 13:06
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2014-7-2 12:43:59 | 只看该作者
taroxd 发表于 2014-7-2 12:38
str.split(/\s*,\s*/) 把str按照逗号分隔,逗号的前后可以有空格(其实空格无所谓,我习惯了而已)
例:  ...

str.split(/\s*\\s*/)那这样岂不是要出错了···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 2014-7-2 12:45:22 | 只看该作者
chd114 发表于 2014-7-2 12:43
str.split(/\s*\\s*/)那这样岂不是要出错了···


如果要用斜杠的话,应该是
str.split(/\s*\\\s*/)

但说真的,那个\s*有没有其实无所谓啦,个人习惯而已

点评

写得很好哦~ 这些东西都是Ruby共通的,和RGSS关系不大  发表于 2014-7-2 14:06
写了一个问题的解答~不过我对RGSS1比较熟,写得也不知道行不行  发表于 2014-7-2 13:59
......  发表于 2014-7-2 13:27
这和VA没有关系啊=。=  发表于 2014-7-2 13:19
VA没怎么用过···因为以前的电脑用VA老是丢文件···写什么东西呢···  发表于 2014-7-2 13:18
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

10
发表于 2014-7-2 12:56:29 | 只看该作者
taroxd 发表于 2014-7-2 12:45
如果要用斜杠的话,应该是
str.split(/\s*\\\s*/)

str.split(/\/) 这样就可以了?

点评

钓上触手一只。其实反面我已经回答过了啦~ 愿意的话,要不要来VA区活动贴写点东西呢  发表于 2014-7-2 13:12
str.split(/\\/)  发表于 2014-7-2 12:59
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-29 10:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表