- doctor Brain
- Возвращаемое значение
- Пробельные символы
- Символы разрыва строки
- Многострочные конструкции
- Словосочетания
- Словосочетания, как строчные литералы
- Псевдонимы
- trimStart и trimLeft
- trimEnd и trimRight
- Какой синтаксис лучше?
- Почему появились псевдонимы?
- Применение
- trim
- trimStart
- trimEnd
- Браузеры
- Альтернатива
- Новые публикации
- JavaScript: сохраняем страницу в pdf
- HTML: Полезные примеры
- CSS: Ускоряем загрузку страницы
- JavaScript: 5 странностей
- JavaScript: конструктор сортировщиков
- Категории
- О нас
- Remove whitespaces inside a string in javascript
- 7 Answers 7
- String.prototype.trim()
- Try it
- Syntax
- Return value
- Examples
- Using trim()
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- как убрать пробелы в строке js
doctor Brain
Как удалить пробелы в начала или в конце строки? Для JavaScript такой проблемы не существует — все очень просто: чтобы избавиться от пробельных символов в начале строки есть функция trimStart() , в конце строки — trimEnd() , а для удаления пробелов как в начале, так и в конце строки — trim() .
const string = " hi "; string.trimStart(); // "hi " string.trimEnd(); // " hi" string.trim(); // "hi"
Возвращаемое значение
Все перечисленные выше методы удаления пробельных символов возвращают новую строку. Таким образом, исходная строка остается неизменной.
const string = " hi "; string.trimStart(); // "hi " string.trimEnd(); // " hi" string.trim(); // "hi" console.log(string); // " hi "
Пробельные символы
Итак, trim() и другие методы этой группы удаляют пробельные символы. Что же к ним относится?
Символы разрыва строки
Возможно Вы удивитесь, но символы разрыва строки относятся к пробельным символам. Разберем на примере:
'hi \n'.trim(); // "hi" 'hi \t'.trim(); // "hi" 'hi \r'.trim(); // "hi"
Многострочные конструкции
В JavaScript можно встретить многострочные конструкции — шаблонные литералы. Хорошей новостью будет то, что метод trim() будет корректно работать и с ними.
const multiLine = ` hi `; multiline.trim(); // "hi"
Словосочетания
Следует помнить, что метод trim() работает только с пробелами в начале и в конце строки и не удаляет пробелы между словами.
Словосочетания, как строчные литералы
Здесь работают те же правила, что и для шаблонных литералов, содержащих только одно слово. С помощью trim() можно удалить только пробельные символы перед первым словом и после последнего слова конструкции.
const multiLine = ` hi there `; multiLine.trim(); /* вернет: "hi there" */
Псевдонимы
trimStart и trimLeft
trimStart() удаляет все пробельные символы от начала строки до первого непробельного символа.
До сих пор некоторые разработчики используют метод trimLeft() . Это псевдоним. Результаты полностью идентичны.
const string = " hi "; trimEnd(string); // "hi "; trimRight(string); // "hi ";
trimEnd и trimRight
trimEnd() удаляет пробелы в конце строки. Для него псевдоним — trimRigth() .
const string = " hi "; trimEnd(string); // " hi"; trimRight(string); // " hi";
Какой синтаксис лучше?
Согласно спецификации ECMAScript, методы trimStart и trimEnd являются предпочтительными и рекомендуемыми. Синтаксис trimLeft и trimRight сохранен для обеспечения совместимости со старым кодом.
Таким образом, в этом противостоянии побеждают trimStart и trimEnd .
Почему появились псевдонимы?
Методы trimLeft и trimRight появились первыми. Однако, в дальнешем было принято решение использовать синтаксис trimStart и trimEnd , в связи с тем, что такое написание сходно с названиями других встроенных методов, например: padStart и padEnd . Такой подход позволяет сделать конструкции языка JavaScript более понятными и однородными.
Для сохранения совместимости с уже написанным ранее кодом методы trimLeft и trimRight были сохранены, как псевдонимы, позволяя использовать устаревший синтаксис в старых проектах.
Применение
trim
Обычно все пользуются методом trim() , например, для удаления лишних пробелов значений полей ввода.
const inputValue = document.getElementById('search').value.trim();
trimStart
Метод trimStart() может пригодиться при работе со строками документа в разметке markdown, когда нужно удалить только пробельные символы в начале строки, не затрагивая пробелы и символы разрыва в конце строки.
- List Item - Sub List Item - Sub List Item
trimEnd
В отношении метода trimEnd() нет каких-то выдающихся мыслей, но возможно он пригодится для удаления символов разрыва строки.
Браузеры
Методы удаления пробельных символов trimStart и trimEnd поддерживаются последними версиями всех пополуярных браузеров, кроме Internet Explorer.
Альтернатива
Вместо метода trim можно использовать регулярное выражение:
const string = ' hi '; string.replace(/ /g, ''); // "hi"
Написано по материалам статьи Samantha Ming “JavaScript String trim()”.
Новые публикации
JavaScript: сохраняем страницу в pdf
HTML: Полезные примеры
CSS: Ускоряем загрузку страницы
JavaScript: 5 странностей
JavaScript: конструктор сортировщиков
Категории
О нас
Frontend & Backend. Статьи, обзоры, заметки, код, уроки.
© 2021 dr.Brain .
мир глазами веб-разработчика
Remove whitespaces inside a string in javascript
I’ve read this question about javascript trim, with a regex answer. Then I expect trim to remove the inner space between Hello and World.
EDITED Why I expected that!? Nonsense! Obviously trim doesn’t remove inner spaces!, only leading and trailing ones, that’s how trim works, then this was a very wrong question, my apologies.
Heh.. «obviously» trim will trim something but not from the «middle» . you need a stripping instead of trimming.. a nice regex like someone already pointed out 🙂
7 Answers 7
For space-character removal use
for all white space use the suggestion by Rocket in the comments below!
@RocketHazmat yes! the correct answer! though this might be slightly more efficient: str.replace(/\s+/g, »)
@RocketHazmat : what do u mean by other white spaces? ‘.replace(/ /g, »)’ this will remove all white spaces right?
trim() only removes trailing spaces on the string (first and last on the chain). In this case this regExp is faster because you can remove one or more spaces at the same time.
If you change the replacement empty string to ‘$’, the difference becomes much clearer:
var string= ' Q W E R TY '; console.log(string.replace(/\s/g, '$')); // $$Q$$W$E$$$R$TY$ console.log(string.replace(/\s+/g, '#')); // #Q#W#E#R#TY#
Performance comparison — /\s+/g is faster. See here: http://jsperf.com/s-vs-s
console.log(string.replaceAll(/\s/, '#')); // #Q#W#E#R#TY#
The currently accepted answer does the same thing. Please present some relevant tests indicating this is faster than that answer by anything more than nanoseconds.
The best way is to do it this way if you only want to replace the whitespaces:
let str = " H e l l o 1 5 9 "; let onlyCharacters = str.replaceAll(" ", ""); // onlyCharacters = Hello159
I used str.replace(/\s/g, «»); a lot but it does not work in all the browsers for example it does not work in duckduckgo in android and also it does not work in android webview.
Probably because you forgot to implement the solution in the accepted answer. That’s the code that makes trim() work.
This answer only applies to older browsers. Newer browsers apparently support trim() natively.
You can use Strings replace method with a regular expression.
The replace() method returns a new string with some or all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp
- / / — Regular expression matching spaces
- g — Global flag; find all matches rather than stopping after the first match
const str = "H e l l o World! ".replace(/ /g, ""); document.getElementById("greeting").innerText = str;
You could use a recursive solution:
function removeWhitespaces(string, i = 0, res = "") < if (i >= string.length) return res else if (string[i] == " ") return removeWhitespaces(string, i + 1, res) else return removeWhitespaces(string, i + 1, res += string[i]) > console.log(removeWhitespaces(" Hello World, how is it going ? "))
Precise answer to how to approach this depends on precise intention. To remove any and/or all white space characters you should use:
If the intention is to only remove specific types of whitespaces (ie. thin or hair spaces) they have to be listed explicitely like this:
However if the intention is to remove just plain spaces only, then performance wise the best solution is:
String.prototype.trim()
The trim() method removes whitespace from both ends of a string and returns a new string, without modifying the original string.
To return a new string with whitespace trimmed from just one end, use trimStart() or trimEnd() .
Try it
Syntax
Return value
A new string representing str stripped of whitespace from both its beginning and end. Whitespace is defined as white space characters plus line terminators.
If neither the beginning or end of str has any whitespace, a new string is still returned (essentially a copy of str ).
Examples
Using trim()
The following example trims whitespace from both ends of str .
const str = " foo "; console.log(str.trim()); // 'foo'
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Mar 26, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
как убрать пробелы в строке js
Для удаления пробелов только в начале и в конце строки существует метод trim() :
const str = ' some text '; console.log(str.trim()); // => some text
Если же надо удалить вообще все пробелы, можно воспользоваться методом replaceAll() , передав ему первым аргументом пробел ‘ ‘ , а вторым — пустую строку » :
const text = ' Это текст, из которого мы хотим удалить все пробелы . '; console.log(text.replaceAll(' ', '')); // => Этотекст,изкоторогомыхотимудалитьвсепробелы.