如何在两个逗号之间获取字符串
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];
【讨论】:
以上是关于如何在两个逗号之间获取字符串的主要内容,如果未能解决你的问题,请参考以下文章
Netezza SQL - 如何用条件替换两个逗号之间的字符串