11 ответов:
Вы можете увеличить строку для реализации этих поведений в качестве методов, как в:
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();
Я предполагаю, что вы хотите удалить пробелы с начала и / или конца строки (вместо удаления все пробелы?
Если это так, вам потребуется регулярное выражение вроде этого:
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"он разбивает строку на пробелы, удаляет их все из массива и снова соединяет все слова с одним пробелом между ними.
Я знаю, что я не должен некромантии на тему, но учитывая детали вопроса, я обычно расширяю его, чтобы означать:
- Я хочу заменить несколько вхождений пробелов внутри строки одним пробелом
- ...и... Мне не нужны пробелы в начале или конце строки (trim)
для этого я использую такой код (скобки на первом регулярном выражении существуют только для того, чтобы сделать код немного более читаемым ... регулярные выражения могут быть боль, если вы не знакомы с ними):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');причина, по которой это работает, заключается в том, что методы на String-object возвращают строковый объект, на котором вы можете вызвать другой метод (так же, как jQuery и некоторые другие библиотеки). Гораздо более компактный способ кодирования, если вы хотите выполнить несколько методов на одном объекте подряд.
Как насчет этого?
"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; } } });
- создать функцию JQuery .
- это событие нажатия клавиши.
- инициализировать переменную.
- дайте условие, чтобы соответствовать символу
- показать предупреждающее сообщение для вашего соответствующего состояния.
попробуйте это.
var string = " string 1"; string = string.trim().replace(/\s+/g, ' ');результат будет
string 1что здесь произошло, так это то, что он сначала обрезает внешние пространства с помощью
trim()затем обрезать внутренние пространства с помощью.replace(/\s+/g, ' ').
Comments