Для строки типа:
"The dog has a long tail, and it is RED!"
Какую манеру jQuery или JavaScript можно использовать для сохранения пробелов только в одном пространстве max?
Цель:
"The dog has a long tail, and it is RED!"
Для строки типа:
"The dog has a long tail, and it is RED!"
Какую манеру jQuery или JavaScript можно использовать для сохранения пробелов только в одном пространстве max?
Цель:
"The dog has a long tail, and it is RED!"
Учитывая, что вы также хотите охватить вкладки, новые строки и т.д., просто замените \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 также имеет встроенный профилировщик - возможно, стоит проверить, что такое производительность в 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!"
Изменить. Это, вероятно, лучше, поскольку он нацелен на пробел, за которым следуют 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.prototype.text:
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 }
Я предлагаю
string = string.replace(/ +/g," ");
для пробелов
OR
string = string.replace(/(\s)+/g,"$1");
для включения нескольких возвратов в один возврат.
Более надежный метод: это также касается удаления начального и конечного пробелов, если они существуют. Например:
// 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 !"
В вашем примере не было таких пробелов, но они тоже очень распространенный сценарий, и принятый ответ обрезал даже те, что были в одиночных пространствах, например: "... RED!", что не так, как вы обычно необходимо.
Вот альтернативное решение, если вы не хотите использовать 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);
Также возможно:
str.replace( /\s+/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 И пробелы //The.replace(/\ 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, " ");
}
:: СЛЕДУЮЩИЙ:: Сохранить # 3 как .js//Я назвал мой NoDoubles.js
:: СЛЕДУЮЩИЙ:: Включите свой 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" >
Это приведет к удалению специальных символов, разрешению пробелов и удалению лишних пробелов.
Я знаю, что опаздываю на вечеринку, но я нашел хорошее решение.
Вот он:
var myStr = myStr.replace(/[ ][ ]*/g, ' ');
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, " ");
var myregexp = new RegExp(/ {2,}/g);
str = str.replace(myregexp,' ');
Мы можем использовать следующее регулярное выражение, объясненное с помощью команды sed system. Аналогичное регулярное выражение может использоваться на других языках и платформах.
Добавьте текст в какой-нибудь файл say test
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!"
Надеюсь, что это служит цели