2014-11-22 103 views
3

在Ruby中,如何拆分字符串(如"John Doe+123456"),以便我可以在"+"之前和之后使用两个变量?在Ruby中的正则表达式使用特殊字符

我刚从Ruby开始,但似乎无法获得诸如"+"等特殊字符的配合。

作为一个说明,我对编程并不陌生,只是Ruby。

回答

5

如果你已经知道你总是分裂在相同的字符,你可以提供的字符作为一个字符串:

> "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"] 
+0

问题作者的澄清:'+'是正则表达式语法的一部分,为了直接使用它,作为一个符号本身,您应该像'\ +'一样转义它。 UPD:已经存在:D – 2014-11-22 23:40:27

+0

最后,使用'scan'并不是一种现实的方式来处理字符串,因为split('+')'存在并且更优雅。 – 2014-11-23 05:38:27

+0

在这种情况下是的,但我想提到它,因为在需要分析时了解'scan'是很好的事情。 – Tilo 2014-11-23 22:34:11

3

除非你的字面意思是字符串+之前的字符串的最后一个字符,并且紧跟在它之后的第一个字符,否则用分隔符作为其参数的.split方法很容易分割字符串。

> string = "John Doe+123456" 
> string.split('+') 
=> ["John Doe", "123456"] 
相关问题