如何使用JavaScript查找以下字符串中的数字?

3

我想要用分隔符"T"和"L"将字符串分成两部分。

T49.80000305175781L60.00000190734863

因此,我期望得到一个包含以下元素的数组:

["49.80000305175781","60.00000190734863"]

我尝试过以下方法,但它们不起作用。

    var xPos = xPos.split('T', 'L'); //Returns empty
    var xPos = xPos.split(/T/, /L/); //Returns empty
    var xPos = xPos.split(/T/); //Returns: ["", "49.80000305175781L60.00000190734863"]

最佳方法应该是什么?

可能是如何使用JavaScript在字符串中查找数字的重复问题。 - Mihir Kale
6个回答

12

您可以使用带有正向预查的正则表达式。

console.log('T49.80000305175781L60.00000190734863'.split(/(?=[TL])/));

或者没有字母,只是在字母出现的地方进行拆分。

console.log('T49.80000305175781L60.00000190734863'.split(/[TL]/));

仅为完整性考虑,以下是使用 String.match 进行单步操作的提案。

console.log('T49.80000305175781L60.00000190734863'.match(/[^TL]+/g));


为什么在第二个例子中开头会有一个空结果? - Björn C
1
返回翻译文本:“'T'”之前的部分。 - Nina Scholz
1
@Mjukis:你可以在这里看看如何过滤掉空值:https://dev59.com/vnVC5IYBdhLWcg3weBA-#2843625 - Sebastian G. Marinescu
1
你可以使用 array.shift(),这样第一个元素就会被移除。 - Nina Scholz

3
您可以使用.match()RegExp /\d+\.\d+/g

console.log("T49.80000305175781L60.00000190734863".match(/\d+\.\d+/g))


这实际上是最灵活和最好的解决方案。 - thepio

1

Split(分割)有两个可选参数。第一个是分隔符,第二个是限制。您可以在此处找到文档。

如果您想使用多个分隔符进行拆分,则应使用正则表达式:

console.log('T49.80000305175781L60.00000190734863'.split(/T|L/));


1

Nina的答案很棒!我是真的这么认为。但是,如果你有更多的数字/数组或者其他你想要称呼它们的东西,你可以像Nina一样使用类似的方法,但是使用正则表达式来获取所有值,而不需要声明所有字母。

包括字母:

console.log('T49.80000305175781L60.00000190734863C34.534623460304040003'.split(/(?=[a-zA-Z])/));

没有字母:

console.log('T49.80000305175781L60.00000190734863C34.534623460304040003'.split(/[a-zA-Z]/));


1
我认为你不能像那样使用split处理多个分隔符。
你可以使用正则表达式来分割字符串。
xPos.split(/T|L/g)

应该可以工作。

0

只需将字符替换为空格并将该字符串存储到新变量中即可。您将获得所有数字


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