2011-06-10 2 views

ответ

5

Один из вариантов:

>>> var str = "Lorem ipsum dolor sit amet consectetur adipiscing elit. Praesent mauris neque adipiscing nec malesuada id fermentum at eros. Curabitur eu neque nunc, et porta risus."; 
>>> str.replace(/([^,.]) /g, '$1, '); 
"Lorem, ipsum, dolor, sit, amet, consectetur, adipiscing, elit. Praesent, mauris, neque, adipiscing, nec, malesuada, id, fermentum, at, eros. Curabitur, eu, neque, nunc, et, porta, risus." 

В качестве альтернативы, вы можете пойти другим путем, чтобы mimick negative lookbehind:

>>> var str = "Lorem ipsum dolor sit amet consectetur adipiscing elit. Praesent mauris neque adipiscing nec malesuada id fermentum at eros. Curabitur eu neque nunc, et porta risus."; 
>>> str.replace(/([,.])? /g, function($0, $1) { return $1 ? $0 : ', '; }); 
"Lorem, ipsum, dolor, sit, amet, consectetur, adipiscing, elit. Praesent, mauris, neque, adipiscing, nec, malesuada, id, fermentum, at, eros. Curabitur, eu, neque, nunc, et, porta, risus." 
+0

Может ли это быть повторно - помещать только 3 (например) случайным образом по всей строке? – ahabman

+0

@ahabman Ну, я думаю, вы могли бы добавить случайный элемент: 'str.replace (/ ([,.])?/G, function ($ 0, $ 1) {return $ 1 || Math.random()> .2? $ 0: ',';}); 'будет заменять только ~ 1/5 (' .2') квалифицированных пробелов. Вы можете * отслеживать максимальное количество пробелов (например, 3) для замены, если хотите. – jensgram

1

Рубин вариант ответа @ jensgram в:

str.gsub(/([^,.]) /, $1 + ', ') 
Смежные вопросы