вопрос по замене символов в конкретной строке
Помогите написать регесп!
Например,есть большой текст с множеством предложений и встречающегося там слова ПРИВЕТ! Нужно заменить все слова ПРИВЕТ на ЗДРАСТЕ но только до первой "точки". |
первое что пришло с утра в голову
ниже var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.'; var tSplit = t.split('.'); tSplit[0] = tSplit[0].replace(/Привет/g, 'Здрасте'); alert(tSplit.join('.')); |
C помощью split и разбиение на массив вариант не подходит. Я и сам точно так делал! Задача поставленна написать условие с помощью регулярного выражения
|
Цитата:
|
Цитата:
|
Цитата:
Вдумчивого изучения статьи по регэкспам на этом сайте с головой хватит, чтобы сделать то, что вам требуется. |
Цитата:
|
Цитата:
Одна из наибольших отстойностей школы - количество домашних заданий погребает под собой желание их делать. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
но с callback - тоже как-то не красиво, надеюсь кто-то поможет написать короче var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.'; t = t.replace(/^[^\.]+/, function (s) { // сначала взял все до первой точки return s.replace(/Привет/g, 'Здрасте'); // в этом куске замена }); alert(t); |
Pavel M., самый нормальный вариант) Так что всё ок)
|
Можно заюзать такой вариант
function replaceText() { var objTextArea = document.getElementById("textarea"); objTextArea.value = replaceTestForFirstSentence(objTextArea.value); } function replaceTestForFirstSentence(str) { var re = /([\w\s]{0,}привет[\w\s]{0,}\.)([\w\s\.\?]{0,})/i; re.exec(str); var first = RegExp.$1; var rest = RegExp.$2; first = first.replace(/привет/gi, 'ЗДРАСТЕ'); return first + rest; } |
BoSO, он на порядок хуже варианта Pavel M..
Спросите у этого своего программиста, написал ли он сам такую регулярку) Если да - выложите, даже интересно) |
to trikadin
абсолютно согласен, вариант от Pavel M. самый крутой! может у кого еще какие будут??? |
Цитата:
Цитата:
|
Цитата:
|
На тексте из второго примера можно и одной регуляркой обойтись
var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.'; alert(t.replace(/Привет(?=[^.]*\..+)/g,'Здрасте')) Только толку никакого) |
Aetae, ну понятно, но хочется-то универсальности)
Хотя, может, задание в этом и состояло) |
Часовой пояс GMT +3, время: 01:17. |