2010-06-07 4 views
17

У меня есть строка |0|0|0|0Заменить первый символ строки

, но она должна быть 0|0|0|0

Как заменить первый символ ('|') с (''). например replace('|','')

(с JavaScript)

+0

Это распространенное заблуждение, исходящее из других языков, в JavaScript метод '.replace()' не заменяет * все * вхождения (если вы не используете '/ g'), он заменяет только ** ** ** появление: http://www.w3schools.com/jsref/jsref_replace.asp –

ответ

49

Вы можете делать то, что у вас есть :)

var string = "|0|0|0|0"; 
var newString = string.replace('|',''); 
alert(newString); // 0|0|0|0 

You can see it working here, .replace() в JavaScript заменяет только первое вхождение по умолчанию (без /g), поэтому это работает в ваших интересах :)

Если вам нужно проверить, не первый ли символ i S труба:

var string = "|0|0|0|0"; 
var newString = string.indexOf('|') == 0 ? string.substring(1) : string; 
alert(newString); // 0|0|0|0​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

You can see the result here

+0

Только первый символ – MgS

+0

@MgS: Test it - '.replace()' только заменяет первое появление, вы хотите удалить '' 'только в том случае, если он является ведущим? Я обновил ответ, чтобы отразить этот вариант :) –

+0

Отлично! Благодаря! – MgS

13
var newstring = oldstring.substring(1); 
+1

Если строка 0 | 0 | 0 | 0, то она удалит первый 0 – MgS

+3

@MgS, true. Поэтому сначала проверьте, что такое первый символ. –

+1

@Mgs Название вопроса задает вопрос о том, как удалить первый символ, а не удалять первый экземпляр определенного символа. Это общее решение. –

0

Это буквально то, что вы предложили.

"|0|0|0".replace('|', '') 

"0|0|0" возвращает

+0

Если строка равна 0 | 0 | 0, тогда она удалит первый 0 – MgS

14
str.replace(/^\|/, ""); 

Это удалит первый символ, если это |.

0
"|0|0|0|0".split("").reverse().join("") //can also reverse the string => 0|0|0|0| 
3

Если вы не уверены в том, что первый символ будет (0 или |), то следующий смысл:

// CASE 1: 
var str = '|0|0|0'; 
str.indexOf('|') == 0 ? str = str.replace('|', '') : str; 
// str == '0|0|0' 

// CASE 2: 
var str = '0|0|0'; 
str.indexOf('|') == 0? str = str.replace('|', '') : str; 
// str == '0|0|0' 

Без условной проверки, str.replace будет по-прежнему удалить первый появление '|' даже если это не первый символ в строке. Это даст вам нежелательные результаты в случае CASE 2 (str будет '00 | 0 ').

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