У мене є рядки з додатковими пробілами, кожен раз, коли є більше одного простору пробілів, я хотів би, щоб це був лише один.
Хтось? Я спробував шукати 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();
використання регулярного виразу з функцією заміни виконує фокус:
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 () працює добре.
Я знаю, що я не повинен неромантизувати тему, але, враховуючи деталі запитання, я зазвичай розширюю це значення:
Для цього я використовую такий код (круглі дужки на першому регулярному вираженні є просто для того, щоб зробити код трохи читабельнішим ... regexps може бути болем, якщо ви не знайомі з ними):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Причина цього працює в тому, що методи String-об'єкта повертають рядовий об'єкт, на який можна викликати інший метод (як і jQuery та деякі інші бібліотеки). Набагато більш компактний спосіб кодування, якщо ви хочете послідовно виконувати кілька методів на одному об'єкті.
var x = "Тестовий тест тесту" .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
.