2016-01-25 6 views
0

У меня есть следующие строковое значениеЗаменить конец строки с «»

var strVal = "This is the best way."; 

Я пытаюсь заменить «» в конце строки с символом ",". В настоящее время у меня есть следующая реализация

strVal.replace(/.\s*$/, ", ") 

Что делать, если в строке не было "." в конце, когда я попробую это, он заменяет последний символ «,».

Каков наилучший способ решить эту проблему, когда значение строки может заканчиваться или отсутствовать?

Если значение строки не заканчивается символом "."

var strVal = "This is the best way"; 

Нужно просто добавить «» до конца строки, она должна выглядеть

„Это самый лучший способ,“

+2

'.' является специальным символом в регулярном выражении, вам нужно избегать его. – elclanrs

+0

* Каков наилучший способ решить эту проблему, когда значение строки может заканчиваться или без «.»? * Что вы подразумеваете под этим. Что должно произойти, когда строка * не заканчивается с периодом? Приведите несколько примеров входов и ожидаемых результатов. –

ответ

5

Это ваше выражение модифицирован для себя в соответствии с просьбой:

strVal.replace(/\.?\s*$/, ", "); 

Как уже было сказано в комментариях, . специальный символ в регулярных выражениях, и вы должны по электронной scape это используя \, поэтому он интерпретируется как точка. ? после этого сделает этот символ опционным.

Кроме того, в случае, если вы ищете выражение, которое выполняет только и именно запрашиваемое поведение, вы можете пропустить правую облицовку в исходном выражении и идти только для подстановки, используя следующее выражение:

strVal.replace(/\.?$/, ", "); 
+0

Какой смысл совместить пробелы с '\ s *', которые кажутся излишними для требований к строке, которую имеет OP. –

+0

Он положил его туда, и мне не нужно его удалять, чтобы заставить его работать, это может помочь ему с другими требованиями, не упомянутыми в его посте. Это просто правильная отделка, имеет смысл. –

+0

@MattBurland - это правильно. Если это только одна строка, которая выглядит как '\ s *', здесь бесполезна. –