Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.11.2011, 11:54
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от BoSO
C помощью split и разбиение на массив вариант не подходит. Я и сам точно так делал!
сегодня с утра в голову пришел вариант без split,
но с callback - тоже как-то не красиво, надеюсь кто-то поможет написать короче

var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.';
 
t = t.replace(/^[^\.]+/, function (s) { // сначала взял все до первой точки
    return s.replace(/Привет/g, 'Здрасте'); // в этом куске замена
});
 
alert(t);
Ответить с цитированием
  #12 (permalink)  
Старый 23.11.2011, 18:47
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Pavel M., самый нормальный вариант) Так что всё ок)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #13 (permalink)  
Старый 23.11.2011, 18:51
Интересующийся
Отправить личное сообщение для BoSO Посмотреть профиль Найти все сообщения от BoSO
 
Регистрация: 22.11.2011
Сообщений: 13

Можно заюзать такой вариант

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, 23.11.2011 в 18:54.
Ответить с цитированием
  #14 (permalink)  
Старый 23.11.2011, 18:54
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

BoSO, он на порядок хуже варианта Pavel M..

Спросите у этого своего программиста, написал ли он сам такую регулярку)

Если да - выложите, даже интересно)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #15 (permalink)  
Старый 23.11.2011, 21:05
Интересующийся
Отправить личное сообщение для BoSO Посмотреть профиль Найти все сообщения от BoSO
 
Регистрация: 22.11.2011
Сообщений: 13

to trikadin
абсолютно согласен, вариант от Pavel M. самый крутой!

может у кого еще какие будут???

Последний раз редактировалось BoSO, 23.11.2011 в 21:10.
Ответить с цитированием
  #16 (permalink)  
Старый 23.11.2011, 22:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Pavel M. Посмотреть сообщение
var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.';
 
t = t.replace(/^[^\.]+/, function (s) { // сначала взял все до первой точки
    return s.replace(/Привет/g, 'Здрасте'); // в этом куске замена
});
 
alert(t);
Сообщение от Pavel M. Посмотреть сообщение
var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.';

var tSplit = t.split('.');
tSplit[0] = tSplit[0].replace(/Привет/g, 'Здрасте'); 

alert(tSplit.join('.'));
примерно одинаково работают дёргают кусок текста до точки и в нём всё заменяют.
Ответить с цитированием
  #17 (permalink)  
Старый 23.11.2011, 22:44
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от melky
примерно одинаково работают
Второй быстрее.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #18 (permalink)  
Старый 23.11.2011, 22:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,497

На тексте из второго примера можно и одной регуляркой обойтись
var t = 'Привет! большой текст Привет! большой текст. Привет! большой текст Привет! большой текст.';
alert(t.replace(/Привет(?=[^.]*\..+)/g,'Здрасте'))

Только толку никакого)
__________________
29375, 35
Ответить с цитированием
  #19 (permalink)  
Старый 23.11.2011, 23:16
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Aetae, ну понятно, но хочется-то универсальности)

Хотя, может, задание в этом и состояло)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по replace. Как заменить все точки в строке? Pluto Общие вопросы Javascript 14 21.04.2017 12:32
Вопрос по бегущей строке для изображений 0931454574 jQuery 6 25.11.2013 20:17
нужно вычислить число символов в строке, не считая пробелов. maxonya Общие вопросы Javascript 2 28.05.2011 14:28
Вопрос на миллион. Ajax и идентификация по адресной строке. 0931454574 AJAX и COMET 5 31.03.2011 11:54
вопрос про замену символов в строке Yellow79 Элементы интерфейса 6 12.10.2010 10:46