Удалить начальную запятую из строки

187

У меня есть следующая строка:

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

Я хочу преобразовать это в массив, но, очевидно, это не верно из-за первой запятой. Как я могу удалить первую запятую из моей строки и сделать ее допустимым массивом?

Я хотел бы в конечном итоге что-то вроде этого:

myArray  = ['first string','more','even more']
Мирча
источник
43
Просто используйтеmyString.slice(1);
NBK
2
@NikhilBenKuruvilla это удалит любой символ, даже если это не запятая. Вот первое удаление символа только через запятую stackoverflow.com/a/39047793/696535
Pawel
Возможный дубликат удаления первого символа строки в Javascript
Дургпал Сингх
Павел, каково будет выражение для удаления первой точки с запятой, независимо от того, где она находится в начале строки? Я должен использовать это: function removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); обратная ул; } Это может быть более полезным - часто есть пробел до и после символа, так что на самом деле мне приходится использовать обрезку дважды.
user1585204

Ответы:

312

Чтобы удалить первый символ, вы бы использовали:

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

Я не уверен, что это будет результат, который вы ищете, потому что вам все равно придется разделить его, чтобы создать массив с ним. Может быть что-то вроде:

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

Имейте в виду, что символ 'будет частью каждой строки в разделении здесь.

Джоэл Этертон
источник
94

В этом конкретном случае (в начале всегда есть один символ, который вы хотите удалить) вы захотите:

str.substring(1)

Однако, если вы хотите определить наличие запятой и удалить ее, если это так, то что-то вроде:

if (str[0] == ',') { 
  str = str.substring(1);
}
thomasrutter
источник
3
+1 для условного тоже. Всегда лучше предположить, что запятой может не быть там.
JoeMoe1984
1
Это лучший ответ и должен быть принятым ответом.
Кристофер Смит
Нет необходимости дважды запускать подстроку, чтобы проверить первый символ: if (str[0] === ',')просто сделать ее немного более производительной.
Croot
11

Один лайнер

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

Я вернусь.

Pawel
источник
9
var s = ",'first string','more','even more'";

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

Предполагается, что строка, с которой вы начинаете, на самом деле является строкой, как вы сказали, а не массивом строк.

EMMERICH
источник
4

Предполагая, что строка называется myStr:

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

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

Обратите внимание, что если строка может отсутствовать в списке, даже если кавычки отсутствуют, и вам нужно пустое место в соответствующем месте в массиве, вам потребуется написать расщепление вручную для надежного решения.

jjrv
источник
4
var s = ",'first string','more','even more'";  
s.split(/'?,'?/).filter(function(v) { return v; });

Результаты в:

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

Сначала разделите запятыми, возможно,
заключив в одинарные кавычки, затем отфильтруйте неверные (пустые) части.

peterhil
источник
3

Чтобы превратить строку в массив, я обычно использую split()

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

Это почти то, что вы хотите. Теперь вам просто нужно удалить первые два и последний символ:

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

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

Чтобы извлечь подстроку из строки, которую я обычно использую, slice()но substr()и substring()делаю работу.

Фабиан Якобс
источник
1

Вы можете напрямую заменить функцию в javascript на regex или определить функцию помощи, как в php ltrim (слева) и rtrim (справа):

1) с заменой:

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

2) Функции справки:

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});;

Вы можете сделать и другие вещи, чтобы добавить параметр в функцию справки с тем, что вы хотите заменить символ и т. Д.

onalbi
источник
1
s=s.substring(1);

Мне нравится держать вещи простыми.

Cris
источник
0

это уберет запятые и пробелы

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Авинаш
источник