Eliminar la coma inicial de una cadena

187

Tengo la siguiente cadena:

",'first string','more','even more'"

Quiero transformar esto en una matriz, pero obviamente esto no es válido debido a la primera coma. ¿Cómo puedo eliminar la primera coma de mi cadena y convertirla en una matriz válida?

Me gustaría terminar con algo como esto:

myArray  = ['first string','more','even more']
Mircea
fuente
43
Simplemente usemyString.slice(1);
NBK
2
@NikhilBenKuruvilla esto eliminará cualquier personaje incluso si no es una coma. Aquí está la eliminación de solo caracteres del primer carácter stackoverflow.com/a/39047793/696535
Pawel
Pawel, ¿cuál sería la expresión para eliminar el primer punto y coma sin importar dónde esté desde el principio de la cadena? Tengo que usar esto: function removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); volver str; } Eso podría ser más útil: a menudo hay espacios en blanco antes y después del personaje, así que realmente tengo que usar recortar dos veces.
user1585204

Respuestas:

312

Para eliminar el primer carácter que usarías:

var myOriginalString = ",'first string','more','even more'"; 
var myString = myOriginalString.substring(1);

Sin embargo, no estoy seguro de que este sea el resultado que estás buscando porque aún necesitarás dividirlo para crear una matriz con él. Tal vez algo como:

var myString = myOriginalString.substring(1);
var myArray = myString.split(',');

Tenga en cuenta que el carácter 'será una parte de cada cadena en la división aquí.

Joel Etherton
fuente
94

En este caso específico (siempre hay un solo carácter al principio que desea eliminar) querrá:

str.substring(1)

Sin embargo, si desea poder detectar si la coma está allí y eliminarla si está, entonces algo como:

if (str[0] == ',') { 
  str = str.substring(1);
}
thomasrutter
fuente
3
+1 para el condicional también. Siempre es mejor asumir que una coma puede no estar allí.
JoeMoe1984
1
Esta es una mejor respuesta y debería ser la respuesta aceptada.
Christopher Smit
No es necesario ejecutar la subcadena dos veces para verificar el primer carácter: if (str[0] === ',')solo para que sea un poco más eficiente.
Croot
11

Un trazador de líneas

str = str.replace(/^,/, '');

Vuelvo enseguida.

Pawel
fuente
9
var s = ",'first string','more','even more'";

var array = s.split(',').slice(1);

Asumiendo que la cadena con la que comienzas es, de hecho, una cadena, como dijiste, y no una matriz de cadenas.

EMMERICH
fuente
4

Suponiendo que la cadena se llama myStr:

// Strip start and end quotation mark and possible initial comma
myStr=myStr.replace(/^,?'/,'').replace(/'$/,'');

// Split stripping quotations
myArray=myStr.split("','");

Tenga en cuenta que si puede faltar una cadena en la lista sin siquiera tener las comillas presentes y desea un lugar vacío en la ubicación correspondiente en la matriz, deberá escribir la división manualmente para obtener una solución sólida.

jjrv
fuente
4
var s = ",'first string','more','even more'";  
s.split(/'?,'?/).filter(function(v) { return v; });

Resultados en:

["first string", "more", "even more'"]

Primero se divide con comas posiblemente rodeadas de comillas simples,
luego se filtran las partes no verdaderas (vacías).

Peterhil
fuente
3

Para convertir una cadena en una matriz, generalmente uso split()

> var s = ",'first string','more','even more'"
> s.split("','")
[",'first string", "more", "even more'"]

Esto es casi lo que quieres. Ahora solo tienes que quitar los dos primeros y el último personaje:

> s.slice(2, s.length-1)
"first string','more','even more"

> s.slice(2, s.length-2).split("','");
["first string", "more", "even more"]

Para extraer una subcadena de una cadena que suelen utilizar slice(), pero substr()y substring()también hacer el trabajo.

Fabian Jakobs
fuente
1

Puede usar la función de reemplazo directo en javascript con regex o definir una función de ayuda como en php ltrim (izquierda) y rtrim (derecha):

1) Con reemplazar:

var myArray = ",'first string','more','even more'".replace(/^\s+/, '').split(/'?,?'/);

2) Funciones de ayuda:

if (!String.prototype.ltrim) String.prototype.ltrim = function() {
    return this.replace(/^\s+/, '');
};
if (!String.prototype.rtrim) String.prototype.rtrim = function() {
    return this.replace(/\s+$/, '');
};
var myArray = ",'first string','more','even more'".ltrim().split(/'?,?'/).filter(function(el) {return el.length != 0});;

Puede hacer y otras cosas para agregar parámetros a la función de ayuda con lo que desea reemplazar el carácter, etc.

onalbi
fuente
1
s=s.substring(1);

Me gusta mantener las cosas simples.

Cris
fuente
0

esto eliminará las comas y espacios finales

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Avinash
fuente