tags:

views:

122

answers:

6

I have a string |0|0|0|0

but it needs to be 0|0|0|0

How do I replace the first character ('|') with (''). eg replace('|','')

(with JavaScript)

+4  A: 
var newstring = oldstring.substring(1);
JSBangs
If the string is 0|0|0|0 then it will remove the first 0
MgS
@MgS, true. So check first to see what the first character is.
JSBangs
@Mgs The title of the question asks how to remove the first character, not remove the first instance of a specific character. This is the general solution.
Justin Johnson
+3  A: 

You can do exactly what you have :)

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

You can see it working here, .replace() in javascript only replaces the first occurrence by default (without /g), so this works to your advantage :)

If you need to check if the first character is a pipe:

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

Nick Craver
Only first character
MgS
@MgS: Test it - `.replace()` only replaces the first occurence, do you want to remove the `|` only if it's leading? I updated the answer to reflect this option as well :)
Nick Craver
Perfect! Thanks!
MgS
Your example link points to a strange place.
Justin Johnson
@Justin - thanks! it was a mis-paste, fixed it in the answer.
Nick Craver
A: 

It literally is what you suggested.

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

returns "0|0|0"

Tesserex
If string is 0|0|0 then it will remove the first 0
MgS
+2  A: 
str.replace(/^\|/, "");

This will remove the first character if it's a |.

Matthew Flaschen
A: 
"|0|0|0|0".split("").reverse().join("")  //can also reverse the string => 0|0|0|0|
bushman
A: 

If you're not sure what the first character will be ( 0 or | ) then the following makes sense:

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

Without the conditional check, str.replace will still remove the first occurrence of '|' even if it is not the first character in the string. This will give you undesired results in the case of CASE 2 ( str will be '00|0' ).

johnny_bgoode