例如,在以2英镑或10英镑的形式输入货币的程序中,是否有一种方法可将其拆分为表格中的两个变量 currencyType =£ currencyValue = 2 要么 currencyType = p currencyValue = 10
其中currencyType是一个字符串,currencyValue是一个int?
答案 0 :(得分:1)
使用下面的patten和matcher类。 \d+
匹配\D+
与一个或多个非数字字符匹配的一个或多个数字。
String s1 = "£2";
Matcher m = Pattern.compile("(\\D+)|(\\d+)").matcher(s1);
while(m.find())
{
if (m.group(1) != null)
System.out.println("Currency Type: " + m.group(1));
if (m.group(2) != null)
System.out.println("Currency Value: " + m.group(2));
}
<强>输出:强>
Currency Type: £
Currency Value: 2
或强>
如果你想处理十进制值,请使用此正则表达式。
Pattern.compile("(\\D+)|(\\d+(?:\\.\\d+)?)");
答案 1 :(得分:0)
您可以使用此正则表达式来获得结果:"(.*?)([\\d,]*)(.*?)"
这会将输入分为三组:
1)领先的货币代币
2)值令牌(可以包含',',在字符串版本中你可以替换所有','带''然后转换为整数)
3)追踪货币代币
通过查看正则表达式中的组,您可以确定是否存在前导或尾随货币,然后从第二组中获取值。您可以通过查找java regex的使用来自己编写代码。
答案 2 :(得分:0)
没有正则表达式的解决方案的想法,虽然我更喜欢其中之一:
String entry = "€2.73";
StringBuilder currency = new StringBuilder();
StringBuilder value = new StringBuilder();
for (char c : entry.toCharArray()) {
if (Character.isDigit(c) || c == '.' || c == ',') {
value.append(c);
} else {
currency.append(c);
}
}
System.out.println("Value = " + value + " Currency = " + currency);
答案 3 :(得分:-1)
您可以将值作为字符串输入,使用split函数正常拆分,并将每个值分配给自己的字符串。然后将字符串转换为整数。
int currencyValue = Integer.parseInt(array [0]); String currencyType = array [1];
array []是将字符串拆分为的数组。
String input = user_input.nextLine();
char[] array = input.toCharArray();
for(int i = 0; i < input.length(); i++) {
if (Character.isLetter(array[i])){
//use .split based on the output of the if statement
}
}