作为Ruby的初学者,我如何在Ruby中从字符串中提取子字符串?示例:
string1 = "1.1.67.01-f9@92a47088f49d095f0"
我想从开头到'-'提取子字符串。所以子字符串是'1.1.67.01'
91zkwejq1#
下面的代码使用第一个-的索引对字符串进行切片(0是字符串的开始):
-
substring = string1[0, string1.index("-")]
afdcj2ne2#
如果你能保证第一个-出现在你想要的子字符串后面,那么Ruby’s string split方法是一个很好的选择。
string1.split('-')[0]
bnl4lu3b3#
听起来像是一个快速和肮脏的正则表达式的工作。
string1 = "1.1.67.01-f9@92a47088f49d095f0" /^([^-]*)-/ =~ string1 puts $1
让我们分解一下正则表达式
/^([^-]*)-/
/是正则表达式的引号,有点像字符串的引号"。(在本例中,它终止了匹配)。然后,我们有一个捕获组(...),它表示这是我们真正“感兴趣”的匹配部分。在内部,我们匹配不是短划线([^-])、重复零次或多次(*)的任何字符。在成功匹配之后,我们将打印第一个(在本例中是唯一的)捕获组$1。
/
"
(...)
[^-]
*
$1
3条答案
按热度按时间91zkwejq1#
下面的代码使用第一个
-
的索引对字符串进行切片(0是字符串的开始):afdcj2ne2#
如果你能保证第一个
-
出现在你想要的子字符串后面,那么Ruby’s string split方法是一个很好的选择。bnl4lu3b3#
听起来像是一个快速和肮脏的正则表达式的工作。
让我们分解一下正则表达式
/
是正则表达式的引号,有点像字符串的引号"
。(在本例中,它终止了匹配)。然后,我们有一个捕获组(...)
,它表示这是我们真正“感兴趣”的匹配部分。在内部,我们匹配不是短划线([^-]
)、重复零次或多次(*
)的任何字符。在成功匹配之后,我们将打印第一个(在本例中是唯一的)捕获组
$1
。