У меня есть строки с дополнительными пробелами, каждый раз там больше, чем только одно пробел, которым я бы хотел быть только одним.
Кто-нибудь? Я попытался найти 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, "")
Я предполагаю, что вы хотите удалить пробелы с начала и/или конца строки (вместо удаления всех пробелов?
Если в этом случае вам понадобится регулярное выражение:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Это приведет к удалению всех пробелов из начала или конца строки. Если вы хотите только обрезать пробелы с конца, тогда регулярное выражение будет выглядеть следующим образом:
mystring = mystring.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"
jQuery.trim() работает хорошо.
Я знаю, что я не должен заниматься некромантией по предмету, но, учитывая детали вопроса, я обычно расширяю его, чтобы означать:
Для этого я использую такой код (скобки в первом регулярном выражении есть только для того, чтобы сделать код более читаемым... regexps может быть болью, если вы не знакомы с ними):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Причина этого в том, что методы на String-object возвращают строковый объект, на который вы можете вызвать другой метод (точно так же, как jQuery и некоторые другие библиотеки). Более компактный способ кодирования, если вы хотите последовательно выполнять несколько методов для одного объекта.
var x = "Test Test Test".split( ").join(" "); оповещение (х);
Как насчет этого?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
выходы "my test string with crazy stuff is cool "
Это также избавляет от любых вкладок
Если вы хотите ограничить использование пользователем пробела в имени, просто создайте оператор 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;
}
}
});
Попробуйте это.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
результат будет
string 1
Здесь произошло то, что сначала он обрезает внешние пространства, используя trim()
, затем обрезает внутренние пространства с помощью .replace(/\s+/g, ' ')
.