2010-10-13 12 views
156

tengo la siguiente cadena:Quitar líder coma de una cadena

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

Quiero transformar esto en una matriz, pero obviamente esto no es válida 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'] 
+39

simplemente usar 'myString.slice (1);' –

+0

@NikhilBenKuruvilla esto eliminará cualquier carácter, incluso si no es una coma. Aquí está el primer carácter de eliminación solo por comas http://stackoverflow.com/a/39047793/696535 – Pawel

+0

Posible duplicado de [Eliminar el primer carácter de una cadena en Javascript] (https://stackoverflow.com/questions/4564414/delete-first -character-of-a-string-in-javascript) –

Respuesta

272

Para quitar el primer carácter se debería utilizar:

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

No estoy seguro de que este será el resultado que se Sin embargo, está buscando porque todavía necesitará dividirlo para crear una matriz con él. Tal vez algo así como:

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

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

7
var s = ",'first string','more','even more'"; 

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

eso asumiendo la cadena que comienza con es en realidad una cadena, como usted ha dicho, y no una matriz de cadenas.

83

En este caso concreto (siempre hay un solo carácter en el inicio que desea eliminar) que querrá:

str.substring(1) 

Sin embargo, si usted quiere ser capaz de detectar si la coma está allí y quitarlo si es así, entonces algo así como:

if (str.substring(0, 1) == ',') { 
    str = str.substring(1); 
} 
+8

+1 para el condicional –

+1

+1 para el condicional también. Siempre es mejor suponer que una coma puede no estar allí. – JoeMoe1984

+0

Esta es una respuesta mejor y debería ser la respuesta aceptada. –

3

Para convertir una cadena en una matriz que suelen utilizar split()

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

Esto es casi lo que quieres. Ahora sólo hay que quitar los dos primeros y el último carácter:

> 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.

2

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 una cadena puede ser que falta en la lista sin ni siquiera tener sus comillas presente y desea un lugar vacío en la ubicación correspondiente en la matriz, tendrás que escribir la división manualmente para una solución robusta.

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

resulta en:

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

primera escisión con comas posiblemente rodeadas por comillas simples,
luego filtrar la no Truthy partes (vacío) hacia fuera.

1

Se puede utilizar directamente reemplazar la función de Javascript con expresiones regulares o definir una función de ayuda como en ltrim php (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 el parámetro a la función de ayuda con lo que se desea reemplazar el carbón, etc.

4

de una sola línea

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

Vuelvo.

0
s=s.substring(1); 

Me gusta mantener las cosas simples.

0

Esto eliminará las comas y espacios de arrastre

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