将输入货币拆分为字符串和int

时间:2015-03-14 14:20:14

标签: java string split currency

例如,在以2英镑或10英镑的形式输入货币的程序中,是否有一种方法可将其拆分为表格中的两个变量     currencyType =£     currencyValue = 2 要么     currencyType = p     currencyValue = 10

其中currencyType是一个字符串,currencyValue是一个int?

4 个答案:

答案 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+)?)");

DEMO

答案 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
    }
}