如何使用Ruby中的“split”方法
发布网友
发布时间:2022-04-22 15:36
我来回答
共2个回答
懂视网
时间:2022-04-07 10:18
split()方法怎么用?
JavaScript split() 方法
JavaScript String 对象
推荐:《javascript高级教程》
定义和用法
split() 方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
参数
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
提示和注释
注释:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注释:String.split() 执行的操作与 Array.join 执行的操作是相反的。
实例
例子 1
在本例中,我们将按照不同的方式来分割字符串:
<script type="text/javascript">
var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
</script>
输出:
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you
例子 2
在本例中,我们将分割结构更为复杂的字符串:
"2:3:4:5".split(":")//将返回["2", "3", "4", "5"]
"|a|b|c".split("|")//将返回["", "a", "b", "c"]
例子 3
使用下面的代码,可以把句子分割成单词:
var words = sentence.split(' ')
或者使用正则表达式作为 separator:
var words = sentence.split(/s+/)
例子 4
如果您希望把单词分割为字母,或者把字符串分割为字符,可使用下面的代码:
"hello".split("")//可返回 ["h", "e", "l", "l", "o"]
若只需要返回一部分字符,请使用 howmany 参数:
"hello".split("", 3)//可返回 ["h", "e", "l"]
热心网友
时间:2022-04-07 07:26
正如你所知道的,ruby字符串被称为一流的对象,它使用了大量的查询和操作方法。一个最基本的字符串操作是把一个字符串分割成多个子字符串。如果你有一个字符串,如“foo,
bar,
baz”而你希望的是这样三个字符串“foo”,“bar”,“baz”。那么字符串类的split方法就可以帮助你。
“split”的基本用法
split方法的最基本用法*一个由单独字符或字符的静态序列组成的字符串。如果split的第一个变量是一个字符串,那么这个字符串中字符就会被当作一个字符串分隔符使用。但是在逗号分隔的数据中,逗号用来分隔数据,这里的每个字符串成分都被用来分隔数据。
#!/usr/bin/env
rubystr
=foo,bar,bazputsstr.
split(,)$
./1.rbfoobarbaz通过正则表达式来增加灵活性
当然,还有一些更容易的方法可以分隔字符串。正则表达式可以为split方法增加灵活性。这里再次拿“foo,
bar,
baz”。间隔在第一个逗号之后而不是第二个逗号。如果该字符串“,”被当成是分隔符,那么在“baz”字符串的开始处仍然会存在间隔。如果使用“,”字符串,它只与第一个逗号匹配,因为第二个逗号后面没有间隔。其作用还是有限的。
解决这个问题的办法是把正则表达式作为定界符的自变量,而不是使用字符串。正则表达式不仅可以匹配静态序列的字符,对字符的不定量和可选字符都同样起作用。
编写正则表达式
为你的分隔符编写一个正则表达式,第一步就是描述清楚什么是分隔符。在这种情况下,一个逗号后面可能存在一个或多个空格是合理的。这一正则表达式库中存在两个要素:逗号和可选的间隔。间隔会使用*
(星号)量词,它表示的意思是“零或更多”。任何在它之前的要素都会匹配零次或若干次。例如,正则表达式/
a
*
/将匹配序列零或更多“a”字符。
#!/usr/bin/env
rubystr
=foo,
bar,bazputsstr.
split(
/,
*/
)$
./2.rbfoobarbaz*splits的数量
想象一个逗号分隔了这样的字符串:“10,20,30,this
is
an
arbitary
string”。其格式是三个数字后面跟了一句评论。此评论可以包含任意的文本,包括带有逗号的文本。要防止split分离文本这个文本,我们可以设置一个最大*列数。请注意,只有在任意文本的评论字符串处在表格最后一列时才管用。
为了*splits的数量,字符串中数域的数量要作为split方法的第二个变量来发送。
#!/usr/bin/env
rubystr
=10,20,30,ten,
twenty
and
thirtyputsstr.
split(
/,
*/,
4
)$
./3.rb102030en,
twentyandthirty了解其局限性
*法有一些局限性。以字符串“10,20,
‘bob,
eve
and
mallory’,30”为例。预期字符是两个数字,后跟一个引证串(可能包含逗号),然后是另一个数字。split不能正确分隔这个字符串的域。为了做到正确分隔,需要保持字符串扫描器处于开启状态,这样一来它就会记得它有没有在引证串内部。反之,如果扫描仪不在启动状态,就不能解决这样的问题。
如何使用Ruby中的“split”方法
/usr/bin/env rubystr =foo,bar,bazputsstr.split(,)$ ./1.rbfoobarbaz通过正则表达式来增加灵活性当然,还有一些更容易的方法可以分隔字符串。正则表达式可以为split方法增加灵活性。这里再次拿“foo, bar, baz”。间隔在第一个逗号之后而不是第二个逗号。如果该字符串“,”被当成是分隔符,那么...
Ruby快速获得各种文件信息
在桌面上新建path.rb文件 打开,输入如下代码:puts "驱动器为: #{Dir.pwd.split(':/').first}"puts "路径为: #{Dir.pwd}"puts "文件名为: #{__FILE__}"puts "扩展名为: #{File.extname(__FILE__)}"运行 输出结果如下 驱动器为: C 路径为: C:/Documents and Settings/Administrator...
求ruby编写脚本,从一堆字符串中找出所有正确的mac地址,并打印。_百 ...
保存为*.rb[API_Studier原创]a="juoiu980010-3210-d903hyuy-w345-78u0-opeinhhu00f1-8971-3231sdfsf".split("-") #分割"-"b=a[0][-4,4]+"-"+a[1]+"-"+a[2][0,4] #第一个mac地址 c=a[5][-4,4]+"-"+a[6]+"-"+a[7][0,4] #第二个mac地址 d=File.open(...
在Ruby中格式化一个XML字符串问题,怎么解决
好了 首先是第一步转成16进制: icon = "22 12 41 2 1 8 43 211 42"# => "22 12 41 2 1 8 43 211 42" icon.split.map {|i| i.to_i.to_s(16) }# => ["16", "c", "29", "2", "1", "8", "2b", "d3", "2a"] 然后是你说的格式化(不太明白你的意思...
RUBY 字符串格式转换
to_i.to_s(16) }# => ["16", "c", "29", "2", "1", "8", "2b", "d3", "2a"] 然后是你说的格式化(不太明白你的意思,不知道是不是个位数前面要补0的意思):icon.split.map {|i| i.to_i.to_s(16) }.map { |s| s.size == 1 ? s.insert(0, "0") :...
Ruby字节数组转换为十六进制字符串
str = "Ruby"str.split(//).each {|e|; print (e.unpack('H*').to_s + "\n")} irb 52 75 62 79 => ["R", "u", "b", "y"]
ruby 字符串转数组问题
names = @story.name.split
ruby下如何使用显示图片代替汉字?想用通配符来识别要表达的汉字,然后用...
可以使用它来代替一个或多个真正字符。当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。示例:1、如果要查找: 任意单个字符 :键入 ? 例如,s?t 可查找“sat”和“set”……。2、任意字符串 :键入 * 例如,s*d 可查找“sad”和“started”……
我怎样才能在全局忽略UTF-8字符串无效的字节序列
一旦你force_encoding如果数据是从您的数据库,你可以改变你的ASCII-8BIT或二进制编码;ruby应该举报他们据此即可。或者,您可以monkeypatch数据库驱动程序来强制编码的读取它的所有字符串。这是一个巨大的,虽然,可能是完全错误的做法。正确的答案将是解决你的字符串编码。这可能需要它们的数据库修复,数据...
如何应付不知名的爬虫骚扰?
用memcache记录每个IP访问计数,单位时间内超过阀值就让用户填写验证码,用Rails编写的示例代码如下: Ruby代码 ip_counter = Rails.cache.increment(request.remote_ip) if !ip_counter Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes) elsif ip_counter > 2000 render :template => 'test'...