2015-05-16 3 views
2

Я хочу заменить «ты» на «твою сестру». Однако слово «youtube» должно оставаться неизменным. Поэтому я решил использоватьВ javascript есть ли способ отличить буквы от других персонажей?

replace(/ you /, " your sister "); 

Однако теперь строка «Я тебя люблю!» остается неизменным, а также любая строка, в которой вместо слова вам не следует строка с пробелом в ней. Я хотел бы знать, является ли символ, который следует за словом «ты», это письмо или нет. Если это так, оставьте его без изменений, если это не так, измените его на «вашу сестру».

+0

str.replace («вы», «ваша сестра»); –

+0

@torazaburo они, вероятно, также ищут полезную ссылку или полный ответ о том, как ее использовать, учитывая, что '\ b' означает только что-то, когда используется в реальном регулярном выражении call =) –

ответ

6

Что такое «письмо»? Это не так глупо, как кажется: в качестве примера многие языки относятся к числу 7 как к числу, но есть некоторые орфографии, в которых это письмо. Поэтому в этом случае вам нужно описать, что вы имеете в виду, чтобы ответы могли быть адаптированы к этому (вы хорошо поработали над этим, но ваш заголовок все еще наводит на размышления).

Чтобы ответить на этот актуальный вопрос, вы можете сделать глобальную регулярную замену выражений, таких как:

var replaced = input.replace(/\byou\b/g, 'your sister'); 

Используя это, строка «вы» будет заменен на «вашей сестры», но только если он окружен по «границам слов» (пробелы, начало/конец предложения, символы и т. д.).

Мы также должны использовать модификатор /.../g (для «глобального согласования»), так что замена действует на всех экземпляров «ты», а не только первый.

4

Вам нужно слово пограничный характер \b

s.replace(/\byou\b/g, 'your sister') 
+1

, хотя, вероятно, с модификатором' g' –

+0

да, наверное :) –

2

Вы ищете для \b (словораздела):

slice(/\byou\b/, "your sister") 

Но что slice? Я предполагаю, что вы имеете в виду что-то вроде

string.replace(/\byou\b/, "your sister") 
2

\b соответствует границе слова - между словом характером (на самом деле буквенно-цифровым плюс подчеркивание) и не-слово характера.

Таким образом, /\byou\b/ будет соответствовать «вам», если не будет частью другого слова.


Это для «исторических причин»: он сделал это легко подобрать обычный набор символов в C как идентификаторы языка программирования.

Смежные вопросы