Убрать отступы в многострочном тексте
Приветствую всех!
Башку уже поломал, подмогните советом! Есть многострочный текст var text = "tra-ta ta tra-ta ta tra-ta ta tra-ta ta tra-ta ta"; Задачка такая, чтобы убрать пробелы в начале и конце строк и привести к такому виду: var text = "tra-ta ta tra-ta ta tra-ta ta tra-ta ta tra-ta ta"; Если бы на языке PHP, я бы сделал за пару минут, но в javascript совсем плаваю. Вот соорудил что-то такое, но это не работает: var arr = text.split("\n"); var index; var ddrr = ''; for (index = 0; index < arr.length; ++index) { ddrr = $.trim(arr[index]) + "\n"; ddrr = ddrr + ddrr; } |
Это вам регу надо сделать, я не умею, но точно знаю что есть такая, которая все доп.пробелы выпиливает влет.
UPD http://stackoverflow.com/questions/1...a-single-space |
Вопрос в Реге - это вопрос второй!
Первый вопрос - как собрать файл воедино после цикла? |
Цитата:
Соединение элементов в строку, это string.join('\n'); |
rafaello,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <textarea name="" rows="10" cols="80">tra-ta ta tra-ta ta tra-ta ta tra-ta ta tra-ta ta</textarea> <textarea name="" rows="10" cols="80"></textarea> <script> var t = document.querySelectorAll("textarea"); var text = t[0].value; text = text.replace(/^\s+|\s+(?=[\n\r])/gm,"") t[1].value = text </script> </body> </html> |
Цитата:
|
рони,
если в textarea, то вообще ничего не надо. Серверу один раз при записи сделать, а не постоянно при каждом изменении значения в поле перебирать все заново на клиенте. ) |
laimas,
textarea только для примера, потому что переменная в 1 посте не корректна |
Цитата:
Там javascript вырезает все теги html. --------------------------------------------------------- РОНИ, большое спасибо за помощь! Хотя в упор не понял, как это без цикла так получилось... |
Цитата:
|
Я попробовал в песочнице, и получается так, что если убрать второй <textarea name="" rows="10" cols="80"></textarea>
то ничего и не получается.... Сейчас попытаюсь объяснить суть самой задачи. Есть два textarea с разными Ай-ди. В первом находится текст в виде html кода. За одно действие (один клик) надо вытащить тот текст из первого textarea, очистить от html тегов, в каждой строке убрать пробелы и вставить во второй textarea. Вся эта функция уже написана, но в ней не хватает момента очистки от пробелов. Поэтому, используя вариант профессора Рони, я не смогу сделать того, что мне надо. Хотя и свой первоначальный вариант я додумал. Плохо ли хорошо, но он работает. Было var arr = text.split("\n"); var index; var ddrr = ''; for (index = 0; index < arr.length; ++index) { ddrr = $.trim(arr[index]) + "\n"; ddrr = ddrr + ddrr; } Стало var arr = text.split("\n"); var index; var ddrr = ''; for (index = 0; index < arr.length; ++index) { ddrr = ddrr + $.trim(arr[index]) + "\n"; } |
rafaello,
а чем неустроило var ddrr = text.replace(/^\s+|\s+(?=[\n\r])/gm,"")? |
Цитата:
|
Цитата:
Избавиться от тегов можно двояковыпукло: или засадив хтмл в дом и достав оттуда textContent (innerText) - что небезопасно если нет гарантий чистоты хтмля; или регой, или скачать готовую функцию strip_tags() и все такое. http://phpjs.org/functions/strip_tags/ а тут та самая рега в 1 строку https://css-tricks.com/snippets/java...in-javascript/ |
Проблема с функциями в том, что специальные символы не конвертятся. Например там написано … - ну так и получите в тексте, вместо ...
Поэтому бестовым способом является компиляция в дом и забор оттуда текста как текста. Но если в хтмле будет скрипт, он сработает. Чтобы конвертировать туда-сюда функциями, я укоротил список ентитек функции html_entity_decode до практического минимума и засунул в свою либу, вот так: var html_entity_decode=function(str) { var m={"194":"¿","195":"ÿ","197":"Ÿ","198":"ƒ","203":"˜","206":"ο","207":"ϖ","226":"♦","38":"&","34":""","39":"'","60":"<","62":">"},d=0; for(d in m) str=str.split(m[d]).join(String.fromCharCode(d)); return str; }; |
Цитата:
Цитата:
Всем спасибо! |
Цитата:
|
Часовой пояс GMT +3, время: 17:46. |