我在拆分类似于以下字符串的内容时遇到问题:
43.80美元
我想要的是能够将表达式拆分为一个数组,其中“43.80”作为第一个元素,“USD”作为第二个元素。所以结果会是这样的:
[“43.80”,“美元”]
我确信有一些方法可以用正则表达式来做到这一点,但我对它不够熟练,无法自己解决。任何帮助将非常感激。
如果您的数据确实看起来像,"43.80USD"
那么您可以使用
"43.80USD".split("(?i)(?=[a-z])",2)
(?=[a-z])
将在任何a-z
字符之前拆分(?i)
将使使用的正则表达式不区分大小写,因此它也适用于uSd
["43.80", "U", "S, "D"]
但["43.80", "USD"]
我们需要使用2
.这个正则表达式有效(\d*\.\d*)([a-zA-Z]*)
。第 1 组将是金额,包括小数。第 2 组将是美元或其他货币名称。请注意,这个正则表达式只需要一个小数点,其他一切都是可选的。所以这也匹配:“45123.15542ABCDEFG”。第 1 组为 45123.15542,第 2 组为 ABCDEFG。如果您想要更严格的要求,请告诉我它们是什么,然后将其放入。否则您的代码将类似于:
Pattern p = Pattern.compile("(\\d*\\.\\d*)([a-zA-Z]*)");//Note the double \\ to escape twice.
Matcher m = p.matcher("43.80USD");
String amount, type;
if(m.matches){
amount = m.group(1);
type = m.group(2);
}