Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2017, 21:04
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Помогите пожалуйста собрать регулярку
Уже час сижу над тем, чтобы из
Код:
Ряд 1
Ряд 2
"Ряд 3
Ряд 4
Ряд 5
Ряд 6"
Ряд 7
Ряд 8
сделать
Код:
Ряд 1 
Ряд 2
"Ряд 3<newline>Ряд 4<newline>Ряд 5<newline>Ряд 6"
Ряд 7
Ряд 8
Меньше всего не работает
str = str.replace(/\n([.]*)/gim, '<newline>');
но оно не учитывает, что замену нужно производить внутри кавычек.

Мой внутренний логик не понимает, почему
str = str.replace(/(["]+[.]*)\n([.]*["]+)/gim, '$1<newline>$2');
не имеет никакого эффекта на строку.

Последний раз редактировалось CraftLawrence, 16.03.2017 в 21:11.
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2017, 21:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

CraftLawrence,
<textarea id="test" rows="7" cols="70">Ряд 1
Ряд 2
"Ряд 3
Ряд 4
Ряд 5
Ряд 6"
Ряд 7
Ряд 8</textarea>
<script>
      test.value = test.value.replace(/("[^"]+")/gim, function(a) {
   return a.split(/\n\r?/).join('<newline>')
});
  </script>
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2017, 21:41
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от рони Посмотреть сообщение
CraftLawrence,
<textarea id="test" rows="7" cols="70">Ряд 1
Ряд 2
"Ряд 3
Ряд 4
Ряд 5
Ряд 6"
Ряд 7
Ряд 8</textarea>
<script>
      test.value = test.value.replace(/("[^"]+")/gim, function(a) {
   return a.split(/\n\r?/).join('<newline>')
});
  </script>
Обалдеть. Работает.
Я даже не удивлен, что тут всё на много сложнее, чем я думал. Огромное спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 17.03.2017, 07:58
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,010

<textarea id="test" rows="7" cols="70">Ряд 1
Ряд 2
"Ряд 3
Ряд 4
Ряд 5
Ряд 6"
Ряд 7
Ряд 8</textarea>
<script>
test.value = test.value.replace(/"|\r?\n/g, function f(a) {
   return (a == '"') ? (f.inQ = !f.inQ, a) : (f.inQ ? '<newline>' : a);
});
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста!!! igrovik Общие вопросы Javascript 40 10.04.2018 13:53
Помогите пожалуйста разобраться со скриптом Shalty Opera, Safari и др. 1 21.01.2013 16:41
Пожалуйста помогите решить задачу на java alex01rus1991 Элементы интерфейса 9 27.11.2012 01:02
Помогите пожалуйста я новичок! NemzevDanil Общие вопросы Javascript 3 02.02.2011 19:23
Помогите пожалуйста я новичок! NemzevDanil Элементы интерфейса 0 02.02.2011 00:00