2014-02-11 19 views
1

Я хочу удалить пробелы перед строками, а также заменить все пробелы между словами на пробел. Если после строки есть пробелы, удалите все пробелы в пространство. Как я могу это сделать?Удалить пробелы в строке

Такие, как:

"  My   name is Eddy  " -> "My name is Eddy " 

"  My   name is Eddy" -> "My name is Eddy" 
+0

Существуют ли в триммер не работает для вас ? [Демо] (http://jsfiddle.net/HCnnY/). Также [см.] (Http://www.sitepoint.com/trimming-strings-in-javascript/) – Roopendra

+0

Почему пространство после 'Eddy' не удаляется в первом примере? – Bergi

+0

@Bergi Используется для моего авто. Я просто хочу удалить дублированный запрос на сервер. – Eddy

ответ

1

Попробуйте

var str=" My name is Eddy "; 
alert(str.trim()); 

DEMO

Попробуйте этот код также

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

Я попытался, но получил ошибку «trim is not function» – Eddy

+1

@ user3296015: [Использовать современный браузер] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/ Trim) :-) – Bergi

+0

Пожалуйста, проверьте мою демонстрацию для лучшего понимания. – Amit

1

Вы можете использовать String.prototype.trim() на современные браузеры (см compatibility):

" My name is Eddy ".trim() 

вернется

"My name is Eddy" 

В IE8 вы можете использовать polyfill предложил в MDN page:

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

В JS нет функции trim(). – Eddy

+0

Мой плохой, я только что отредактировал свой ответ. – fiddler

+0

На моем IE8 нет функции обрезки :( – Eddy

2

Замена нескольких вхождений пространств (\s+) с одним пробелом ' ' с помощью метода String.replace, затем обрезать оставшиеся из лея t и справа с помощью метода String.trim.

"  My   name is Eddy  ".replace(/\s+/g,' ').trim() 

trim доступен в FF 3.5+ IE 9+, Safari 9+.

+0

Он не работает со вторым корпусом :( – Eddy

+0

@ user3296015 вы уверены? Работает для меня в хроме ... – zamnuts

1

Есть много способов, вы можете сделать это, но я считаю, что проще понять, с тремя отдельными заменами:

function cleanup(str) { 
    return str 
     .replace(/ +/g, ' ') 
     .replace(/^ /, '') 
     .replace(/ $/, ''); 
} 

console.log(
    "'" + 
    cleanup("  My   name is Eddy  ") + 
    "'" 
); 

Журналы:

'My name is Eddy' 

Это совместимо с очень старыми браузерами, а также с новыми.

Редактировать: вы хотите удалить все ведущие пробелы, но если есть конечные пробелы, вы хотите сохранить одно конечное пространство, верно? Это не то, как вы описали проблему.

Если вы посмотрите на функцию cleanup я отправил, должно быть понятно, как это исправить, чтобы не удалять завершающие пробелы:

function cleanup(str) { 
    return str 
     .replace(/ +/g, ' ') 
     .replace(/^ /, ''); 
} 

console.log(
    "'" + 
    cleanup("  My   name is Eddy  ") + 
    "'" 
); 

Журналы:

'My name is Eddy ' 
+0

Он работает во втором случае, но не в первом случае :( – Eddy

+0

@ user3296015: Просто опустите третью замену – Bergi

+0

Теперь он работает :) Спасибо! – Eddy

Смежные вопросы