Javascript все лишние пробелы

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() работает только с пробелами в начале и в конце строки и не удаляет пробелы между словами.

Читайте также:  Kotlin list contains any

Словосочетания, как строчные литералы

Здесь работают те же правила, что и для шаблонных литералов, содержащих только одно слово. С помощью 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()”.

Новые публикации

Photo by CHUTTERSNAP on Unsplash

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(' ', '')); // => Этотекст,изкоторогомыхотимудалитьвсепробелы. 

Источник

Оцените статью