gpt4 book ai didi

java - 正则表达式替换字符串第一个索引处除减号字符 "-"之外的所有无效字符

转载 作者:行者123 更新时间:2023-12-02 01:32:45 25 4
gpt4 key购买 nike

我使用以下正则表达式来替换十进制数字字符串中存在的所有无效字符:

final String REGEX_REPLACE_INVALID_DECIMAL_NUMBER_CHARACTERS = "\\D*(\\d+\\.?\\d*)\\D*";

这是我的测试代码:

    String[] inputs = {
"0a", // -> 0
"a0a.0", // -> 0.0
"b0a.t1c", // -> 0.1
"-a0b.c1d", // -> -0.1
"-#0.t12[3]", // -> -0.123
"-123.[1]2_3", // -> -123.123
};

final String REPLACE_INVALID_DECIMAL_NUMBER_CHARACTERS = "\\D*(\\d+\\.?\\d*)\\D*";
for (String input : inputs) {
String replaceInvalidDecimalNumberCharacters = input.replaceAll(REPLACE_INVALID_DECIMAL_NUMBER_CHARACTERS, "$1");
System.out.println("input: " + input +
"\n\treplaceInvalidDecimalNumberCharacters: " + replaceInvalidDecimalNumberCharacters);
}

目前我的正则表达式会替换所有无效字符,甚至替换字符串的第一个索引处的小数点和减号。

如何排除删除减号和小数点?

这是我的测试输出:

input: 0a   replaceInvalidDecimalNumberCharacters: 0
input: a0a.0 replaceInvalidDecimalNumberCharacters: 00
input: b0a.t1c replaceInvalidDecimalNumberCharacters: 01
input: -a0b.c1d replaceInvalidDecimalNumberCharacters: 01
input: -#0.t12[3] replaceInvalidDecimalNumberCharacters: 0.123
input: -123.[1]2_3 replaceInvalidDecimalNumberCharacters: 123.123

最佳答案

我建议使用两个步骤继续使用正则表达式。首先,从输入字符串中去除所有不相关的字符。然后,使用另一个正则表达式检查第一次替换后剩下的内容是否是有效数字:

String input = "-123.[1]2_3";
input = input.replaceAll("[^0-9.-]+", "");
if (input.matches("-?\\d+(?:\\.\\d+)?")) {
System.out.println("Found a valid number: " + input);
}
else {
System.out.println("Input is invalid");
}

关于java - 正则表达式替换字符串第一个索引处除减号字符 "-"之外的所有无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808784/

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