18 ответов:
учитывая, что вы также хотите покрыть вкладки, новые строки и т. д., Просто замените
\s\s+С' ':string = string.replace(/\s\s+/g, ' ');если вы действительно хотите покрыть только пробелы (и, следовательно, не вкладки, новые строки и т. д.), Сделайте так:
string = string.replace(/ +/g, ' ');
Так как вы, кажется, заинтересованы в производительности, я профилировал их с firebug. Вот результаты, которые я получил:
str.replace( / +/g, ' ' ) -> 790ms str.replace( / +/g, ' ' ) -> 380ms str.replace( / {2,}/g, ' ' ) -> 470ms str.replace( /\s\s+/g, ' ' ) -> 390ms str.replace( / +(?= )/g, ' ') -> 3250msЭто на Firefox, работает 100k замены строк.
Я рекомендую вам сделать свои собственные профилирующие тесты с firebug, если вы считаете, что производительность является проблемой. Люди, как известно, плохо предсказывают, где находятся узкие места в их программах.
(также обратите внимание, что панель инструментов разработчика IE 8 также имеет встроенный профилировщик -- it возможно, стоит проверить, какова производительность в IE.)
var str = "The dog has a long tail, and it is RED!"; str = str.replace(/ {2,}/g,' ');EDIT: Если вы хотите заменить все пробельные символы наиболее эффективным способом было бы так:
str = str.replace(/\s{2,}/g,' ');
это одно решение, хотя оно будет нацелено все Пространство символов:
"The dog has a long tail, and it is RED!".replace(/\s\s+/g, ' ') "The dog has a long tail, and it is RED!"Edit: это, вероятно, лучше, так как он нацелен на пространство, за которым следует 1 или более пробелов:
"The dog has a long tail, and it is RED!".replace(/ +/g, ' ') "The dog has a long tail, and it is RED!"альтернативный метод:
"The dog has a long tail, and it is RED!".replace(/ {2,}/g, ' ') "The dog has a long tail, and it is RED!"Я не использую
/\s+/сам по себе, так как это заменяет пробелы, которые охватывают 1 символ несколько раз и может быть менее эффективным, так как он нацелен больше, чем необходимо.Я не глубоко проверить любой из них так lmk, если есть ошибки.
кроме того, если вы собираетесь сделать замену строки, Не забудьте повторно назначить переменную/свойство своей собственной замене, например:
var string = 'foo' string = string.replace('foo', '')С помощью jQuery.прототип.текст:
var el = $('span:eq(0)'); el.text( el.text().replace(/\d+/, '') )
У меня есть этот метод, я называю его методом Derp за неимением лучшего имени.
while (str.indexOf(" ") !== -1) { str = str.replace(/ /g, " "); }
более надежный:
function trim(word) { word = word.replace(/[^\x21-\x7E]+/g, ' '); // change non-printing chars to spaces return word.replace(/^\s+|\s+$/g, ''); // remove leading/trailing spaces }
более надежный метод: это заботится о и удаление начальных и конечных пробелов, если они существуют. Например:
// NOTE the possible initial and trailing spaces var str = " The dog has a long tail, and it is RED! " str = str.replace(/^\s+|\s+$|\s+(?=\s)/g, ""); // str -> "The dog has a long tail, and it is RED !"в вашем примере не было этих пробелов, но они тоже очень распространенный сценарий, и принятый ответ заключался только в том, чтобы обрезать их в одиночные пробелы, например: "The ... Красный! - это не то, что вам обычно нужно.
предлагаю
string = string.replace(/ +/g," ");для всего пространства
илиstring = string.replace(/(\s)+/g,"");для превращения нескольких возвратов в один возврат также.
вот альтернативное решение, если вы не хотите использовать replace (замените пробелы в строке без использования replace javascript)
var str="The dog has a long tail, and it is RED!"; var rule=/\s{1,}/g; str = str.split(rule).join(" "); document.write(str);
Я знаю, что я опоздал на вечеринку, но я нашел хорошее решение.
вот это:
var myStr = myStr.replace(/[ ][ ]*/g, ' ');
всесторонний незашифрованный ответ для новичков и др.
это для всех манекенов, таких как я, которые тестируют сценарии, написанные некоторыми из вас, ребята, которые не работают.
следующие 3 примера-это шаги, которые я предпринял, чтобы удалить специальные символы и дополнительные пробелы на следующих 3 веб-сайтах (все из которых работают отлично) {1. EtaVisa.com 2. EtaStatus.com 3. Tikun.com} так что я знаю, что они работают отлично.
мы приковали их цепями вместе с более чем 50 одновременно и без проблем.
// это удалены специальные символы + 0-9 и позволяет только буквы (верхний и нижний регистр)
function NoDoublesPls1() { var str=document.getElementById("NoDoubles1"); var regex=/[^a-z]/gi; str.value=str.value.replace(regex ,""); }// это удалены специальные символы и позволяет только буквы (верхний и нижний регистр) и 0-9 и пробелы
function NoDoublesPls2() { var str=document.getElementById("NoDoubles2"); var regex=/[^a-z 0-9]/gi; str.value=str.value.replace(regex ,""); }// это удалены специальные символы и позволяет только буквы (верхний и нижний регистр) и 0-9 и пробелы // Этот. заменить (/\s\s+/g," ") в конце удаляет лишние пробелы // когда я использовал одинарные кавычки, это не сработало.
function NoDoublesPls3() { var str=document.getElementById("NoDoubles3"); var regex=/[^a-z 0-9]/gi; str.value=str.value.replace(regex ,"") .replace(/\s\s+/g, " "); }:: NEXT:: Спасти #3 как
a .js// я назвал мои NoDoubles.js:: NEXT:: Включите JS в свою страницу
<script language="JavaScript" src="js/NoDoubles.js"></script>включите это в поле формы:: например
<INPUT type="text" name="Name" onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>так, что это выглядит так
<INPUT type="text" name="Name" onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>это позволит удалить специальные символы, позволяющие одиночные пробелы и удалить лишние пробелы.
Jquery имеет функцию trim (), которая в основном превращает что-то вроде этого "FOo Bar" в "FOo Bar".
var string = " My String with Multiple lines "; string.trim(); // output "My String with Multiple lines"Это гораздо более полезно, потому что это автоматически удаляет пробелы в начале и в конце строки, а также. Регулярное выражение не требуется.
var string = "The dog has a long tail, and it is RED!"; var replaced = string.replace(/ +/g, " ");или если вы хотите заменить вкладки:
var replaced = string.replace(/\s+/g, " ");
мы можем использовать следующее регулярное выражение, объясненное с помощью системной команды sed. Подобное регулярное выражение может использоваться в других языках и платформах.
добавить текст в файл проверка
manjeet-laptop:Desktop manjeet$ cat test "The dog has a long tail, and it is RED!"мы можем использовать следующее регулярное выражение для замены всех пробелов одним пробелом
manjeet-laptop:Desktop manjeet$ sed 's/ \{1,\}/ /g' test "The dog has a long tail, and it is RED!"надеюсь, что это служит цели
попробуйте заменить несколько пробелов одним пробелом.
<script type="text/javascript"> var myStr = "The dog has a long tail, and it is RED!"; alert(myStr); // Output 'The dog has a long tail, and it is RED!' var newStr = myStr.replace(/ +/g, ' '); alert(newStr); // Output 'The dog has a long tail, and it is RED!' </script>Читать далее @ замена нескольких пробелов на один пробел
var text = `xxx df dfvdfv df dfv`.split(/[\s,\t,\r,\n]+/).filter(x=>x).join(' ');результат:
"xxx df dfvdfv df dfv"
Comments