Как удалить начальные и конечные пробелы из заданной строки HTML?

178

У меня есть следующая строка HTML. Каким будет пример кода в JavaScript для удаления начальных и конечных пробелов из этой строки?

<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Trimming using JavaScript<br />
<br />
<br />
<br />
all leading and trailing white spaces
<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Сунил
источник
В чем твоя настоящая проблема? Вы хотите удалить пробелы перед вставкой узлов в документ?
Роб W
Я хочу удалить все ведущие пробелы, а также все оставшиеся пробелы. Мне очень нравится метод Trim в C #, за исключением того, что он удаляет даже пробелы.
Сунил
Таким образом, в моем примере я наконец должен получить следующее после обрезки: Обрезка с использованием JavaScript <br /> <br /> <br /> <br /> все начальные и конечные пробелы
Sunil
@ Не знаю, решали ли вы когда-нибудь это, но вы можете попробовать одно из следующих решений: stackoverflow.com/questions/16708158/…
Крис Бейкер,

Ответы:

245

См. Метод String trim()- https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim.

var myString = '  bunch    of <br> string data with<p>trailing</p> and leading space   ';
myString = myString.trim();
// or myString = String.trim(myString);

редактировать

Как отмечено в других комментариях, можно использовать подход регулярных выражений. trimМетод эффективен только псевдоним для регулярных выражений:

if(!String.prototype.trim) {  
  String.prototype.trim = function () {  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
} 

... это внедрит метод в собственный прототип для тех браузеров, которые все еще плавают в мелком конце бассейна.

Крис Бейкер
источник
3
Я бы предпочел способ регулярного выражения, потому что он поддерживается не во всех браузерах ( IE от кашля <9).
PeeHaa
2
Метод обрезки не обрезает пробелы, а только пробелы. Так что это не то, что я ищу.
Сунил
8
Я не уверен, что вы думаете о "пробелах", но обрезка удалит пробелы в целом (перевод строки, пробел, табуляция и т. Д.), А не только пробел.
BSA
2
@bsa Я понял, что он означает «пустое пространство» в визуальном смысле, как «визуально пустые области в результатах рендеринга HTML», а затем он добавил в комментарии выше «кроме новых строк, вызванных brтегами».
Крис Бейкер
2
почему нет отметки в ответе со 170 ответами? ТАК смущает меня иногда.
tcoulson
63
var str = "  my awesome string   "
str.trim();    

для старых браузеров используйте регулярные выражения

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 
Джанкар Махбуб
источник
2
«[]» в точности совпадает с «». Группировка персонажей ровно из одного персонажа ... ну ... ровно из одного персонажа.
Flimzy
2
@Flimzy: Да, было бы больше смысла писать [\t\n\ ]или просто \sне [ ]имеет смысла.
Эрик
11
string.replace(/^\s+|\s+$/g, "");
Сандип Манн
источник
Прочитайте вопрос, &nbsp;используется вместо обычного пробела. Кроме того, пробел содержится в теге.
Роб W
6

Если вы работаете с многострочной строкой, например с файлом кода:

<html>
    <title>test</title>
    <body>
        <h1>test</h1>
    </body>
</html>

И хочу заменить все ведущие строки, чтобы получить такой результат:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>

Вы должны добавить multilineфлаг к своему регулярному выражению ^и $сопоставлять строку за строкой:

string.replace(/^\s+|\s+$/gm, '');

Соответствующая цитата из документов :

Флаг «m» указывает, что многострочная входная строка должна рассматриваться как несколько строк. Например, если используется «m», «^» и «$» изменяются с соответствия только в начале или конце всей строки на начало или конец любой строки в строке.

Хайме Гомес
источник
4

Я знаю, что это очень старый вопрос, но он все еще не имеет принятого ответа. Я вижу, что вы хотите удалить следующее: html-теги, которые являются «пустыми», и пробелы, основанные на html-строке.

Я предложил решение, основанное на ваших комментариях, для вывода, который вы ищете:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>";
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim() удаляет начальные и конечные пробелы

.replace(/&nbsp;/g, '') удаляет &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); удаляет пустые теги

Энтони
источник
3
var trim = your_string.replace(/^\s+|\s+$/g, '');
SenorAmor
источник
1
Будут ли удалены пробелы, такие как <br /> или <p> & nbsp; </ p> <div> & nbsp; </ div>? Простое простое пространство не является проблемой. Это удаление пустого пространства, что я после.
Сунил
удалит ли это пробел
user2086641
3

01). Если вам нужно удалить только начальные и конечные пробелы, используйте это:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

это вернет строку "No.255 Коломбо"

02). Если вам нужно удалить все пробелы, используйте это:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

это вернет строку "No.255Colombo"

Чамиля Маддумаж
источник