从字符串中移除前导逗号

192

我有如下字符串:

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

我希望将这个字符串转化为一个数组,但由于第一个逗号,它显然是无效的。我该如何从我的字符串中删除第一个逗号并将其变成一个有效的数组?

我想得到类似于以下的结果:

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

45
只需使用myString.slice(1)即可。 - nbk
2
@NikhilBenKuruvilla 这将删除任何字符,即使它不是逗号。这里是仅删除第一个逗号的方法:https://dev59.com/9W865IYBdhLWcg3wOb5h#39047793 - Pawel
可能是在Javascript中删除字符串的第一个字符的重复问题。 - Durgpal Singh
Pawel,如何去除字符串开头的第一个分号?我需要使用以下代码:function removeFirstSemicolon(str) { str = str.trim(); str = str.replace(/^;/, ''); return str; }这可能更有帮助 - 通常在字符前后会有空格,因此我必须两次使用trim。 - user1585204
11个回答

315

要删除第一个字符,您应该使用:

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

我不确定这会是你想要的结果,因为你仍需要将其分割并创建一个数组。也许可以尝试以下代码:

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

记住,这里拆分后的每个字符串都包含'字符。


97

在这种特定情况下(始终有一个要删除的起始字符),您需要:

str.substring(1)

然而,如果你想检测逗号是否存在,并在存在时将其移除,可以使用以下类似的代码:

if (str[0] == ',') { 
  str = str.substring(1);
}

3
+1也适用于条件语句。最好假设逗号可能不存在。 - JoeMoe1984
1
这是一个更好的答案,应该被接受。 - Christopher Smit
没有必要运行两次子字符串来检查第一个字符:if (str[0] === ',') 只是为了稍微提高性能。 - Croot

15

一句话描述

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

我会回来的。


1
这个答案比被选中的那个更好。 - Shehan DMG

10
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()从字符串中提取子字符串,但substr()substring()也能完成这个任务。


2
s=s.substring(1);

我喜欢保持简单。


1
您可以在JavaScript中直接使用replace函数与正则表达式,或者定义一个帮助函数,就像php中的ltrim(左)和rtrim(右)一样:
1) 使用replace函数:
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, '');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接