gpt4 book ai didi

java - 如何将字符串拆分为仅正整数和负整数?

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:53 24 4
gpt4 key购买 nike

我正在编写一个程序来使用 vector 函数进行不同的计算,但我现在拥有的程序对负数进行了分隔。我试过使用不同的分隔符,但我似乎无法找到正确的分隔符。

有谁知道拆分字符串时如何保留正负数?另外,有没有办法保留任何小数值? .45 将返回 45 而 .29 将返回 29

这是代码:

ArrayList<Integer> list = new ArrayList<Integer>();

String twoVectors = "a=<-1,2,-3> b=<4,-5,6>"; // vector and a and b

String[] tokens = twoVectors.split("\\D");

for (String s : tokens)
if (!s.equals(""))
list.add(Integer.parseInt(s));

System.out.println(Arrays.toString(list.toArray()));

当我运行程序时,我得到 [1, 2, 3, 4, 5, 6] 而不是 [-1, 2, -3, 4, -5, 6]。我使用过的所有函数都运行良好,但在使用负值时无法运行。

如有任何帮助,我们将不胜感激。

最佳答案

你可以使用

    String[] tokens = twoVectors.split("[^\\d-]+");

[^\\d-]+ :匹配除数字和 -

之外的任何内容

[] :匹配 []

中提到的所有内容

^ : 否定意思不匹配 (\\d-)

\\d- : 数字 0-9- 字符

Regex Demo


    String twoVectors = "a=<-1,2,-3> b=<4,-5,6>";

ArrayList<Integer> list = new ArrayList<Integer>();

String[] tokens = twoVectors.split("[^\\d-]");

for (String s : tokens)
if (!s.equals(""))
list.add(Integer.parseInt(s));

System.out.println(Arrays.toString(list.toArray()));

输出:

[-1, 2, -3, 4, -5, 6]

或者

您可以使用 Patternmatcher 来查找所有需要的值,即带有 -?\\d+ regex< 的单数或无符号数/p>

Regex Demo -?\d+


更新:对于 Double 值,您可以使用 [^\\d-.]+并确保使用 Double 而不是 Integer 以及 Double.parseDouble

对于 PatternMatcher 使用 -?\\d*\\.?\\d+

关于java - 如何将字符串拆分为仅正整数和负整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42311853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com