在Ruby中,如何拆分字符串(如"John Doe+123456"
),以便我可以在"+"
之前和之后使用两个变量?在Ruby中的正则表达式使用特殊字符
我刚从Ruby开始,但似乎无法获得诸如"+"
等特殊字符的配合。
作为一个说明,我对编程并不陌生,只是Ruby。
在Ruby中,如何拆分字符串(如"John Doe+123456"
),以便我可以在"+"
之前和之后使用两个变量?在Ruby中的正则表达式使用特殊字符
我刚从Ruby开始,但似乎无法获得诸如"+"
等特殊字符的配合。
作为一个说明,我对编程并不陌生,只是Ruby。
如果你已经知道你总是分裂在相同的字符,你可以提供的字符作为一个字符串:
> "John Doe+123456".split('+') # no regular expression needed
=> ["John Doe", "123456"]
,或者如果你必须使用正则表达式,然后逃离+
与一个\
:
> "John Doe+123456".split(/\+/) # using a regular expression; escape the +
=> ["John Doe", "123456"]
最后并非最不重要的,这里是另一种方式来做到这一点:
> "John Doe+123456".scan(/[^+]+/) # find all sequences of characters which are not a +
=> ["John Doe", "123456"]
除非你的字面意思是字符串+
之前的字符串的最后一个字符,并且紧跟在它之后的第一个字符,否则用分隔符作为其参数的.split
方法很容易分割字符串。
> string = "John Doe+123456"
> string.split('+')
=> ["John Doe", "123456"]
问题作者的澄清:'+'是正则表达式语法的一部分,为了直接使用它,作为一个符号本身,您应该像'\ +'一样转义它。 UPD:已经存在:D – 2014-11-22 23:40:27
最后,使用'scan'并不是一种现实的方式来处理字符串,因为split('+')'存在并且更优雅。 – 2014-11-23 05:38:27
在这种情况下是的,但我想提到它,因为在需要分析时了解'scan'是很好的事情。 – Tilo 2014-11-23 22:34:11