2010-06-07 12 views
17

tengo una cadena |0|0|0|0Sustituir el primer carácter de la cadena de

pero hay que ser 0|0|0|0

¿Cómo se sustituye el primer carácter ('|') con (''). por ejemplo replace('|','')

(con JavaScript)

+0

Este es un concepto erróneo que viene de otros lenguajes, en JavaScript el método '.replace()' no reemplaza * todas * las apariciones (a menos que use '/ g'), solo reemplaza el ** primero ** ocurrencia: http://www.w3schools.com/jsref/jsref_replace.asp –

Respuesta

49

Usted puede hacer exactamente lo que tiene :)

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

You can see it working here, .replace() en javascript sólo se sustituye la primera ocurrencia por defecto (sin /g), por lo que esto funciona a su ventaja :)

Si necesita comprobar si el primer carácter i s una tubería:

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

Sólo el primer carácter – MgS

+0

@MgS: pruébelo - '.replace()' solo reemplaza la primera ocurrencia, ¿desea eliminar '' 'solo si es líder? Actualicé la respuesta para reflejar también esta opción :) –

+0

¡Perfecto! ¡Gracias! – MgS

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

Si la cadena es 0 | 0 | 0 | 0, entonces eliminará el primer 0 – MgS

+3

@MgS, verdadero. Así que primero verifica cuál es el primer personaje. –

+1

@Mgs El título de la pregunta pregunta cómo eliminar el primer carácter, no eliminar la primera instancia de un personaje específico. Esta es la solución general. –

0

Literalmente es lo que usted sugiere.

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

vuelve "0|0|0"

+0

Si la cadena es 0 | 0 | 0, eliminará el primer 0 – MgS

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

Esto eliminará el primer carácter si es un |.

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

Si no está seguro de lo que será el primer carácter (0 o |) entonces el siguiente tiene sentido:

// 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' 

Sin la comprobación condicional, str.replace todavía se eliminará el primer ocurrencia de '|' incluso si no es el primer personaje de la cadena. Esto le dará resultados no deseados en el caso de CASO 2 (str será '00 | 0 ').

Cuestiones relacionadas