Удалить начальную запятую из строки - PullRequest
186 голосов
/ 13 октября 2010

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

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

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

Я бы хотел получить что-то вроде этого:

myArray  = ['first string','more','even more']

Ответы [ 10 ]

311 голосов
/ 13 октября 2010

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

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

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

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

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

93 голосов
/ 13 октября 2010

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

str.substring(1)

Однако, если вы хотите быть в состоянии определить, запятая литам и убери если есть, то как то так:

if (str[0] == ',') { 
  str = str.substring(1);
}
9 голосов
/ 13 октября 2010
var s = ",'first string','more','even more'";

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

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

8 голосов
/ 20 августа 2016

Однострочник

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

Я вернусь.

4 голосов
/ 30 сентября 2013
var s = ",'first string','more','even more'";  
s.split(/'?,'?/).filter(function(v) { return v; });

Результат:

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

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

4 голосов
/ 13 октября 2010

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

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

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

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

3 голосов
/ 13 октября 2010

Чтобы превратить строку в массив, я обычно использую 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 голос
/ 13 октября 2017
s=s.substring(1);

Мне нравится, чтобы все было просто.

1 голос
/ 23 сентября 2015

Вы можете напрямую заменить функцию в 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});;

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

0 голосов
/ 09 января 2018

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

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...