Как обрезать строку в JavaScript?
Все браузеры, начиная с ИЕ9+ у trim()
метод для строк.
Для тех браузеров, которые не поддерживают операции TRIM()
, вы можете использовать этот полифилл от уведомление:
if (!String.prototype.trim) {
(function() {
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
String.prototype.trim = function() {
return this.replace(rtrim, '');
};
})();
}
Что сказал, Если вы используете библиотека jQuery
, `$.отделка(ул.) также доступна и ручки неопределенным/нулевым.
Убедиться в этом:
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};
String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};
String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};
String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};
Обрезка от jQuery удобна, если вы уже используете этот фреймворк.
$.trim(' your string ');
Я часто использую jQuery, поэтому обрезка строк с его помощью для меня естественна. Но, возможно, существует обратная реакция против jQuery? :)
Хотя есть куча правильных ответов, следует отметить, что "строка" объект в JavaScript имеет родной `.способ отделки () по состоянию на в ECMAScript 5. Таким образом, в идеале любая попытка прототип способа отделки действительно должны проверить, чтобы увидеть, если он уже существует первый.
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
};
}
Добавлено в родной: В JavaScript 1.8.1 / В ECMAScript 5
Таким образом поддерживается:
В Firefox: 3.5+
Сафари: 5+
Интернет Эксплорер: ИЕ9+ (в норм режиме!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx
Хром: 5+
Опера: 10.5+
В ECMAScript 5 таблица поддержки: http://kangax.github.com/es5-compat-table/
Существует множество реализаций, которые могут быть использованы. Наиболее очевидным кажется что-то вроде этого:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
" foo bar ".trim(); // "foo bar"
Простая версия здесь Что такое общая функция для обрезки JavaScript?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
Я знаю, что этот вопрос был задан три года назад.Теперь, - Строку.отделка () был добавлен изначально в JavaScript.Для примера, вы можете обрезать прямо как следовать,
document.getElementById("id").value.trim();
Если вы используете jQuery, используйте с jQuery.функция TRIM ()
. Например:
if( jQuery.trim(StringVariable) == '')
Грубое Badassery имеет 11 цветовых решениях с эталоном информация:
http://blog.stevenlevithan.com/archives/faster-trim-javascript
Не удивительно регулярное выражение-это медленнее, чем традиционные петли.
Вот мой личный. Этот код старый! Я написал это для JavaScript1.1 и Netscape 3 и он был только слегка обновили так. (В оригинале используется строка.шара)
/**
* Trim string. Actually trims all control characters.
* Ignores fancy Unicode spaces. Forces to string.
*/
function trim(str) {
str = str.toString();
var begin = 0;
var end = str.length - 1;
while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
while (end > begin && str.charCodeAt(end) < 33) { --end; }
return str.substr(begin, end - begin + 1);
}
Использовать собственные методы JavaScript: String.trimLeft()
, строки.trimRight()
, а строки.отделка()
.
<БР> Строку.отделка()` поддерживается в IE9+ и все остальные основные браузеры:
' Hello '.trim() //-> 'Hello'
<БР> Строку.trimLeft () " и " строка.trimRight()` нестандартны, но поддерживаются в всеми основными браузерами кроме IE
' Hello '.trimLeft() //-> 'Hello '
' Hello '.trimRight() //-> ' Hello'
<БР> Однако поддержка IE легко полифилла:
if (!''.trimLeft) {
String.prototype.trimLeft = function() {
return this.replace(/^\s+/,'');
};
String.prototype.trimRight = function() {
return this.replace(/\s+$/,'');
};
if (!''.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
}
Теперь дни вы можете использовать string.trim(), что является реализацией родной JavaScript
var orig = " foo ";
console.log(orig.trim());//foo
См. также
String.prototype.trim = String.prototype.trim || function () {
return this.replace(/^\s+|\s+$/g, "");
};
String.prototype.trimLeft = String.prototype.trimLeft || function () {
return this.replace(/^\s+/, "");
};
String.prototype.trimRight = String.prototype.trimRight || function () {
return this.replace(/\s+$/, "");
};
String.prototype.trimFull = String.prototype.trimFull || function () {
return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "").replace(/\s+/g, " ");
};
Бессовестно украдено с МФ duereg.
Трим код из угловой JS проекта
var trim = (function() {
// if a reference is a `String`.
function isString(value){
return typeof value == 'string';
}
// native trim is way faster: http://jsperf.com/angular-trim-test
// but IE doesn't have it... :-(
// TODO: we should move this into IE/ES5 polyfill
if (!String.prototype.trim) {
return function(value) {
return isString(value) ?
value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
};
}
return function(value) {
return isString(value) ? value.trim() : value;
};
})();
и назвать его как отделка(" Привет ")
использовать просто код
var str = " Hello World! ";
alert(str.trim());
Поддержка браузеров
Feature Chrome Firefox Internet Explorer Opera Safari Edge
Basic support (Yes) 3.5 9 10.5 5 ?
Для старого браузера добавить прототип
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Вы можете просто объявить переменную как строку и использовать ее функции TRIM:
var str = new String('my string');
str= str.trim();
Сегодня, практически каждый браузер поддерживает строку.прототип.отделка()
.
Вы используете его так :
var origStr = ' foo ';
var newStr = origStr.trim(); // Value of newStr becomes 'foo'
В случае, если вы все еще может потребоваться поддержка древний браузер, который не'т поддерживать эту функцию, это полифилла предложено МДН :
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/gm,'');
};
}
Из предыдущих ответов, он отличается добавив флаг "м".
Флаг " м " будет искать в тексте несколько линейных. В этом режиме отметьте начало и конец узора (^
$
) ставится перед и после символа новой строки (\п
).
Я написал эту функцию для отделки, когда .отделка() функция не была доступна в JS еще в 2008 году. Некоторые старые браузеры еще не поддерживают .отделка() функция и я надеюсь, что эта функция может помочь кому-то.
ОТДЕЛКА ФУНКЦИЯ
function trim(str)
{
var startpatt = /^\s/;
var endpatt = /\s$/;
while(str.search(startpatt) == 0)
str = str.substring(1, str.length);
while(str.search(endpatt) == str.length-1)
str = str.substring(0, str.length-1);
return str;
}
Пояснение функция TRIM() принимает объект String и удалить любой начальный и конечные пробельные символы (пробелы,знаки табуляции и символы новой строки) и возвращает обрезанную строку. Вы можете использовать эту функцию для обрезки форм ввода, чтобы обеспечить достоверные данные для отправки.
Функция может быть вызвана следующим образом в качестве примера.
form.elements[i].value = trim(form.elements[i].value);