【问题标题】: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 变量)

标签: javascript jquery string comma


【解决方案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];

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2015-10-09
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多