如何在两个逗号之间获取字符串

Posted

技术标签:

【中文标题】如何在两个逗号之间获取字符串【英文标题】:How to get string between two commas 【发布时间】:2015-03-30 13:02:09 【问题描述】:

我有一些数字字符串是:

var _ids = 130,131,240;

我需要从这个字符串中获取一些数字,即 131,我不能使用 .split() 方法,因为逗号之间的数字可以更多,而不是这个我知道实际 id 是数字 130(在这个例子中),所以我正在这样做:

var _id = 130;
var id = _ids.substring(_ids.lastIndexOf((_id + ',') + 1), _ids.lastIndexOf(','));

结果我有130,136...我做错了什么?有人可以帮忙吗?

【问题讨论】:

split() 绝对是这里最好的解决方案。如果你能解释为什么你需要检索131 背后的规则(它总是你需要的第二个值,还是倒数第二个,还是中间的?)那么我相信可以找到一个更优雅的解决方案。跨度> 您需要将_ids 声明用引号括起来,例如var _ids = "130,131,240"; 才能正常工作。无论如何,当您已经知道数字时,为什么还需要从字符串中获取数字? 你是怎么得到130,136的? 从后端它是一些DOM元素的数据属性的值 你误会了lastindexof我想。它不会给你传递字符串中最后一个字符的索引,而是给定字符串最后一次出现的索引。由于您在代码中将数字 130 与字符 ,1 连接并查找它们的索引,因此您将零作为子字符串方法的开始参数,最后出现 , 作为结束参数返回 @ 987654333@(依赖你的 _ids 变量) 【参考方案1】:

要获得130 之后的那个,请使用......split()

var _ids   = "130,131,240";
var _id    = "130";
var arr    = _ids.split(',');
var idx    = arr.indexOf(_id) + 1;
var result = null;

if (idx < arr.length && idx != -1) 
     result = arr[ idx ]; // gets the next one


document.body.innerhtml = result;

请注意,您不能将用逗号分隔的数字作为变量,它可能是一个字符串?

【讨论】:

如果你搜索 id 240 你的代码会出错,你不测试密钥是否存在 @Lukas - 嗯,它还会返回什么? @R3tep - 为什么要在最后一个数字之后搜索下一个数字? @adeneo "return null" 是最好的解决方案,实际上如果您搜索 id 240,您的代码会返回错误。 @R3tep - 它应该是一个简单的例子,而不是修复任何边缘情况和未来潜在问题的代码等,但我已经改变了它【参考方案2】:

您可以为此使用正则表达式:

var _ids = '130,131,240';
var _id = '130';
var id = _ids.match(new RegExp(id+',([^,]+),'))[1];

【讨论】:

以上是关于如何在两个逗号之间获取字符串的主要内容,如果未能解决你的问题,请参考以下文章

javascript 如何截取两个指定下标之间的字符串

检查字符串是不是有两个或多个逗号并删除额外的逗号 [重复]

Netezza SQL - 如何用条件替换两个逗号之间的字符串

javascript 如何截取两个指定下标之间的字符串

如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容

如何在字符串之间插入逗号