从字符串中删除前导逗号


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,


Pawel,无论从字符串开头到第一个分号,删除第一个分号的表达式是什么?我必须使用此函数:function removeFirstSemicolon(str){str = str.trim(); str = str.replace(/ ^; /,''); 返回str; }这可能会更有用-字符前后通常会有空白,因此我真的必须使用两次修整。
user1585204 '18 -10-3

Answers:


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

3
+1也有条件。最好总是假设逗号不存在。
JoeMoe1984年

1
这是一个更好的答案,应该是公认的答案。
Christopher Smit

不必运行子字符串两次来检查第一个字符:if (str[0] === ',')只是使其性能更高一点。
Croot


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

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

假设您开始使用的字符串实际上是您所说的String,而不是字符串数组。


4

假设该字符串称为myStr:

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

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

请注意,如果在列表中甚至没有引号的情况下也可能缺少字符串,并且您希望在数组的相应位置中留一个空白点,则需要手动编写拆分以得到可靠的解决方案。


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

结果是:

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

首先用逗号分隔,
并用单引号引起来,然后过滤掉非真实的(空)部分。


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()but substr()并且substring()也可以完成这项工作。


1

您可以使用regex直接在javascript上使用replace函数,或在php ltrim(left)和rtrim(right)中定义帮助函数:

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

这将删除结尾的逗号和空格

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.