2014-11-22 2 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 –

+0

Последнее, используя 'scan', не является реалистичным способом обработки строки, так как' split ('+') 'существует и делает это более элегантно. –

+0

В этом случае да, но я хотел бы упомянуть об этом, потому что хорошо разбираться в 'scan', когда требуется синтаксический анализ. – Tilo

3

Если вы буквально не имеете в виду, последний символ строки перед + и первый непосредственно после него, разделение строки в рубине легко с помощью метода .split, который принимает разделитель в качестве аргумента.

> string = "John Doe+123456" 
> string.split('+') 
=> ["John Doe", "123456"] 
Смежные вопросы