JavaScript分割移除“:”冒号字符。

5

我有一个像这样的字符串。

var a="1:2:3:";

我希望使用a.split(":")方法将其拆分,以删除“:”冒号字符。

我希望得到以下结果:

["1","2","3"]

但是,a.split(":") 的执行结果是这样的:
["1","2","3",""]

Split函数正如其名...在这种情况下,它分割了3和null。请移除最后一个冒号。 - rlemon
3个回答

11

使用此 trim 方法来删除尾部的冒号。

function TrimColon(text)
{
    return text.toString().replace(/^(.*?):*$/, '$1');
}

那么你可以这样调用它:

TrimColon(a).split(":")

当然,如果你愿意的话,你可以将TrimColon作为字符串原型方法,并允许你像这样做:

a.TrimColon().split(":");

如果你想要解释所使用的正则表达式:请前往此处


2
为了保证健壮性,我认为你应该使用 replace(/(^:)|(:$)/g, ''),以防字符串是“:1:2:3:”。 - valentinas
@valentinas,为什么不把它作为答案呢?那是更好的选择。 - RobG

4

在解析这样的字符串之前,您应该从字符串的开头和结尾删除冒号:

a.replace(/(^:)|(:$)/g, '').split(":")

0
如果你不想像其他答案中那样用正则表达式来做,可以选择下面的方法并使用它。

仅移除空字符串

["1","2","3",""].filter(String)
// ['1', '2', '3']

["1","2","3","", 123].filter(String)
// ['1', '2', '3', 123]

["1","2","3","", 123, null, undefined].filter(String)
// ['1', '2', '3', 123, null, undefined]

// Function
function RemoveEmptyString(arr) {
  if (Array.isArray(arr))
    return arr.filter(String);
  else
    return [];
}
RemoveEmptyString(["1","2","3",""])
// ["1","2","3"];

// Prototype
Object.defineProperty(Array.prototype, 'removeEmptyStrings', {
  value: function () {
    return this.filter(String);
  }
});
["1","2","3", ""].removeEmptyStrings()
// ["1","2","3"]

只删除无效元素

["1","2","3",""].filter(Value => Value)
// ['1', '2', '3']

["1","2","3","", 123].filter(Value => Value)
// ['1', '2', '3', 123]

["1","2","3","", 123, null, undefined].filter(Value => Value)
// ['1', '2', '3', 123]

// Function
function RemoveEmptyString(arr) {
  if (Array.isArray(arr))
    return arr.filter(Value => Value);
  else
    return [];
}
RemoveEmptyString(["1","2","3","", 123, null, undefined])
// ["1","2","3", 123]
// Prototype
Object.defineProperty(Array.prototype, 'removeEmptyStrings', {
  value: function () {
    return this.filter(Value => Value);
  }
});
["1","2","3","", 123, null, undefined].removeEmptyStrings()
// ["1","2","3", 123]

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