怎样返回一个字符串中第一次出现
我知道可以通过以
"#"
或 "Apt"
之前的部分?我知道可以通过以
"#"
或 "Apt"
作为分隔符将字符串拆分成数组,并调用 .first
方法,但肯定有更简单的方法。字符串分割比尝试使用正则表达式提取字符串部分肯定更容易和更可读。对于后一种情况,你需要使用捕获组来获取第一个匹配项。它与字符串分割相同。
string.split(/#|Apt/, 2).first
我会写一个方法来使它更清晰易懂。例如,像这样:
class String
def substring_until(substring)
i = index(substring)
return self if i.nil?
i == 0 ? "" : self[0..(i - 1)]
end
end
使用 String#[] 方法。像这样:
[
'#foo',
'foo#bar',
'fooAptbar',
'asdfApt'
].map { |str| str[/^(.*)(#|Apt)/, 1] } #=> ["", "foo", "foo", "asdf"]
我不经常用Ruby编写代码,但我相信你可以使用类似于正则表达式的方法。
^.*(#|Apt)
或者,如果你把字符串放入一个分词器中,你可以对它进行一些操作,但是考虑到你正在寻找一个单词而不仅仅是一个单个字符,这可能会更加困难。
2
作为split
的第二个参数(表示最多分成两部分)是值得的。否则,这可能会比必要的工作量多得多。 - Dan Tao