gpt4 book ai didi

java正则表达式匹配任何整数或 double 然后替换非数字/小数字符

转载 作者:行者123 更新时间:2023-12-01 11:20:09 24 4
gpt4 key购买 nike

我试图将字符串与任何整数或 double 匹配,如果不匹配,我想删除所有无效字符以使字符串成为有效的整数或 double (或空字符串)。到目前为止,这就是我所拥有的,但它会打印 15- 这是无效的

String anchorGuyField = "15-";

if(!anchorGuyField.matches("-?\\d+(.\\d+)?")){ //match integer or double
anchorGuyField = anchorGuyField.replaceAll("[^-?\\d+(.\\d+)?]", ""); //attempt to replace invalid chars... failing here
}

最佳答案

您可以使用 Pattern()Matcher() 来验证字符串是否适合转换为 int 或 double:

public class Match{
public static void main(String[] args){
String anchorGuyField = "asdasda-15.56757-asdasd";

if(!anchorGuyField.matches("(-?\\d+(\\.\\d+)?)")){ //match integer or double
Pattern pattern = Pattern.compile("(-?\\d+(\\.\\d+)?)");
Matcher matcher = pattern.matcher(anchorGuyField);
if(matcher.find()){
anchorGuyField = anchorGuyField.substring(matcher.start(),matcher.end());
}
}
System.out.println(anchorGuyField);
}
}

与:

anchorGuyField = anchorGuyField.replaceAll("[^-?\\d+(.\\d+)?]", "");

您实际上从字符串中删除了想要匹配的内容,将 1515- 插入,您应该只得到 -

关于java正则表达式匹配任何整数或 double 然后替换非数字/小数字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344005/

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