JavaScript поиск\замена текста

  • Автор темы Автор темы Shandro
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Shandro

Участник
Топикстартер
Сообщения
28
Реакции
0
Хочу написать скрипт, который будет находить в тексте некоторые совпадения, но заминять из массива найденых только первое.
Пример:

Текст:

Иванов
Иванов
Иванов
Иванов
Иванов
Иванов
Иванов
Иванов
...

Найти что:
Иванов

Заменить на:
Петров

Нужный результат:
Петров
Иванов
Иванов
Иванов
Иванов
Иванов
Иванов
...

Тоесть должно заменятся только первое вхождение тектса из "Найти что:". Как можно написать такую операцию на JS ?
Заранее благодарен.
 
Ответ: JavaScript поиск\замена текста

вот такой GREP можно даже без js

(Иванов\r)((Иванов\r)+)

менять на Петров\r$2

можно изящнее, конечно, это quick&dirty :)

если список заменяемых значений, то подставляем переменные вместо Петрова/Иванова и через grep опять же
 
Ответ: JavaScript поиск\замена текста

Skvoznyak сказал(а):
вот такой GREP можно даже без js

(Иванов\r)((Иванов\r)+)

менять на Петров\r$2

можно изящнее, конечно, это quick&dirty :)

если список заменяемых значений, то подставляем переменные вместо Петрова/Иванова и через grep опять же

Такой вариант не подходит.... Результат получается немного не такой, как хочется.... А js нужен, поскольку операция довольно часто должна повторятся, и с разными тестами...
 
Ответ: JavaScript поиск\замена текста

а какой результат хочется? я проверил, как раз по описанию и меняет.
а в JS это засунуть не проблема.
 
Ответ: JavaScript поиск\замена текста

Skvoznyak сказал(а):
а какой результат хочется? я проверил, как раз по описанию и меняет.
а в JS это засунуть не проблема.

в js это засунуть действительно не проблема....
вот пример:

==211
АЛЬФА Ромео 33, 1986р., 1.5 бенз., 3000 у.о. т.(235)24275, (235)22670
АЛЬФА Ромео 33, 1992р., 1.5 інж., КПП 5-ступ., кондиц., ел/склопідйомники, сигналіз., титан. диски, червоний, 5200 у.о. т.моб.80509568043
АУДІ 100, 1984р., темно-синій колір, нерозмитн., 2000 у.о. т.моб.80506910826, 80633409208
АУДІ 100, 1987р., 2.0 інж., ц/замок, г/підсилювач, сигналіз., АБС, червон., 5500 у.о. т.моб.80505700775, після 15 год.
АУДІ 100, 1987р., 2.0 бенз., 3900 у.о. т.моб.80978005009
АУДІ 100, 1988-89р., 2.0 бенз., мито, ст.ц. 6200 у.о. т.моб.80973536651
АУДІ 100, 1988р., 2.3 інж., сигналіз., чорний, 6600 у.о. т.моб.80972893256
АУДІ 100, 1988р., 2.3 бенз., г/підс., люк, велюр, синій металік, 6700 у.о. т.529795, т.моб.80505287904
АУДІ 100, 1988р., повний комплект, 6300 у.о. т.моб.80979889429
АУДІ 100, 1989р., 2.2 турбо/інж., квадро, КПП 5-ступ., ел/пакет, ц/з, титан. диски, АБС, клімат/контроль, чор., 7100 у.о. т.моб.80505408456
АУДІ 100, 1989р., 2.3 інж., 4х4, ел/пакет, титан. диски, АВС, сигналіз., ст.ц. 7500 у.о. т.79464, т.моб.80505418859
АУДІ 100, 1989р., 2.3 інж., КПП 5-ступ., г/підсилювач, шкіра, сірий металік, ст.ц. 7300 у.о. т.526062
АУДІ 100, 1989р., 2.3 бенз., 7200 у.о. т.541423, після 19год., т.моб.80506846347
АУДІ 100, 1990р., 2.3 інж., АВС, вишневий, 8500 у.о. т.556458, 62100, т.моб.80506186109
АУДІ 100, 1990р., 2.3 інж., хетчбек, ц/з, сигналіз., ел/склопідйомн., синій, ст.ц. 6200 у.о. т.моб.80506025004, 80992907434
.
==212
АУДІ А6, 1998р., 1.8 турбо/інж., квадро, 20000 у.о. т.моб.80969449696
АУДІ А6, 1998р., 2.4 бенз., КПП тіптронік, клімат-контр., ел/пакет, титан диски, срібний металік, ст.ц. 18700 у.о. т.моб.80501408865
АУДІ Авант А6, 1995р., 2.6 бенз., універсал, ст.ц. 14800 у.о. т.46518, т.моб.80677566003
АУДІ В4, 1993р., 1.9 турбо/диз., ел/склопід., ел/дзеркала, щойно пригнаний, ст.ц. 11800 у.о. т.моб.80985852905
БМВ 3, 1985р., 1.8 інж., купе, сірий, 3700 у.о. т.моб.80958865050
БМВ 316, 1986р., 1.8 бенз., КПП-5ст., сигналіз., тонування, R15 титан, музика, DVD, ст.ц. 4500 у.о. т.45512, після 19 год., т.моб.80953318784
БМВ 316, 1993р., 1.6 бенз., без док-тів, 3500 у.о. т.моб.80979935074
БМВ 316, 1994р., 1.6 бенз., аірбег, АБС, г/підсилювач, чорний, 10500 у.о. т.моб.80505195760
БМВ 318, 1985р., бенз., 4-дверн., ст.ц. 5000 у.о. т.моб.80953999965
БМВ 318, 1986р., ст.ц. 2400 у.о. т.моб.80958828348
БМВ 318, 1987р., 1.8 інж., двигун-М40, шкіра, капремонт, 6000 у.о. т.моб.80501368396
БМВ 318, 1987р., газ/бенз., 4500 у.о. т.(235)24690, т.моб.80977559020, 80506785782
БМВ 318, 1989р., 1.8 бенз., ц/замок, сигналіз., титан. диски, синій-металік, ст.ц. 5700 у.о. т.моб.80955106477
БМВ-745, 65-й кузов, 2002р.в., 45500 у.о., торг. т.80673840888
ВАЗ (Нива шевроле), 2005р., 1.7 бенз., після ДТП, 5000 у.о. т.моб.80504341771
ВАЗ 1111 (Ока), 1991р., капремонт, жовтий, 2200 у.о. т.моб.80506702682
ВАЗ 1111 (Ока), 1992р., 0.8 бенз., двигун після капремонту, 1900 у.о. т.(234)21811, після 19 год.
...
И так ешё несколько десятков марок автомобилей....
Нада их както разделить....
На данный момент я делаю так:
В ворде записал макрос типа:
найти: "АЛЬФА"
заменить на: " АЛЬФА"
потом:
найти: "АУДІ"
заменить на: " АУДІ"
и т.д.

тоесть перед первое совпадение искомого заменяю на тожесамое, только с пробелом....

далее в инди ниписал скрипт, который заменяет слово с пробелом на нужный мне текст....

хочу отвязатся от ворда...
руками легко проставить пробелы, но нужна атоматизация...
 
Ответ: JavaScript поиск\замена текста

Так ничего искать не надо.
Надо сравнить первые слова соседних абзацев.
Если они разные вставить между ними что хочется.
То есть тут один цикл.
 
Ответ: JavaScript поиск\замена текста

MT сказал(а):
Так ничего искать не надо.
Надо сравнить первые слова соседних абзацев.
Если они разные вставить между ними что хочется.
То есть тут один цикл.

Уточнить немного конкретнее можно?
 
Ответ: JavaScript поиск\замена текста

Могу, но только на VB

myText -- это обрабатываемый текст.
Тогда

Set myParagraphs = myText.Paragraphs

'Перебираем первые слова соседних абзацев
For i = myParagraphs.Count - 1 to 1 Step = -1
Set myWord1 = myParagraphs(i).Words(1)
Set myWord2 = myParagraphs(i+1).Words(1)

' Если первые слова разные
If not(myWord1.Contents = myWord1.Contents) then

' Вставляем что хотим в начало второго абзаца

end if

next

Ну все...
 
Ответ: JavaScript поиск\замена текста

MT сказал(а):
Могу, но только на VB

myText -- это обрабатываемый текст.
Тогда

Set myParagraphs = myText.Paragraphs

'Перебираем первые слова соседних абзацев
For i = myParagraphs.Count - 1 to 1 Step = -1
Set myWord1 = myParagraphs(i).Words(1)
Set myWord2 = myParagraphs(i+1).Words(1)

' Если первые слова разные
If not(myWord1.Contents = myWord1.Contents) then

' Вставляем что хотим в начало второго абзаца

end if

next

Ну все...


Спасибо... Попробую чтото подобное на JS...
 
Статус
Закрыто для дальнейших ответов.