У меня есть строки с дополнительными пробелами, каждый раз, когда есть более одного пробела, я бы хотел, чтобы он был только один.
Кто угодно? Я пытался найти в Google, но у меня ничего не получалось.
Спасибо
У меня есть строки с дополнительными пробелами, каждый раз, когда есть более одного пробела, я бы хотел, чтобы он был только один.
Кто угодно? Я пытался найти в Google, но у меня ничего не получалось.
Спасибо
Ответы:
Что-то вроде этого:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Вы можете дополнить String для реализации этих поведений в виде методов, например:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Теперь это позволяет вам использовать следующие элегантные формы для создания нужных вам строк:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
использование регулярного выражения с функцией replace делает свое дело:
string.replace(/\s/g, "")
var s = ' a b word word. word, wordword word ';
// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"
// or ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"
Он разбивает строку по пробелам , удаляет их все пустые элементы массива из массива (те, которые были больше, чем один пробел) и снова объединяет все слова в строку с одним пробелом между ними.
Я предполагаю, что вы хотите удалить пробелы в начале и / или конце строки (а не удалять все пробелы?
Если это так, вам понадобится такое регулярное выражение:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Это удалит все пробелы в начале или конце строки. Если вы хотите обрезать пробелы только с конца, тогда регулярное выражение будет выглядеть так:
mystring = mystring.replace(/\s+$/g,' ');
Надеюсь, это поможет.
''
вместо ' '
.
jQuery.trim () работает хорошо.
Я знаю, что не должен быть некромантиком по предмету, но, учитывая детали вопроса, я обычно расширяю его следующим образом:
Для этого я использую такой код (круглые скобки в первом регулярном выражении существуют только для того, чтобы сделать код более читабельным ... регулярные выражения могут быть неприятны, если вы не знакомы с ними):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Причина, по которой это работает, заключается в том, что методы объекта String возвращают строковый объект, для которого вы можете вызвать другой метод (так же, как jQuery и некоторые другие библиотеки). Гораздо более компактный способ написания кода, если вы хотите последовательно выполнить несколько методов для одного объекта.
var x = "Test Test Test" .split ("") .join (""); оповещение (х);
Попробуй это.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
результат будет
string 1
То, что произошло здесь, это то, что он сначала обрезает внешние пространства, а trim()
затем обрезает внутренние пространства, используя .replace(/\s+/g, ' ')
.
Если вы хотите ограничить пользователя указанием пустого места в имени, просто создайте оператор if и задайте условие. как я сделал:
$j('#fragment_key').bind({
keypress: function(e){
var key = e.keyCode;
var character = String.fromCharCode(key);
if(character.match( /[' ']/)) {
alert("Blank space is not allowed in the Name");
return false;
}
}
});
Как насчет этого?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
выходы "my test string with crazy stuff is cool "
Этот избавляется от любых вкладок, а также
\s
. Неоправданно сложное регулярное выражение, можно просто написать /\s+/g
.