如何从String变量中只获取整数部分?

时间:2012-11-20 11:46:07

标签: java

我的数据库表中有一些字符串类型数据,如D-101D-102。 我想自动获取前端的下一个数据(一个JSF Web应用程序)以发送到D-103的数据库。

为此我想从字符串中只获取int数据。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

在托管bean中,您可以使用split()函数。

String s = "D-101";
String[] arr = s.split("[^\\d]+");
System.out.println(arr[1]); //prints 101

OR

在xhtml页面中,您可以像这样编写EL。请注意, myBean 是bean的名称, getColumnValue()方法返回列的值(即“D-101”)。

#{myBean.columnValue.split('[^\\d]+')[1]}

答案 1 :(得分:3)

final Pattern lastIntPattern = Pattern.compile("[^0-9]+([0-9]+)$");
            String input = D101;
            Matcher matcher = lastIntPattern.matcher(input);
            if (matcher.find()) {
                String someNumberStr = matcher.group(1);
                int lastNumberInt = Integer.parseInt(someNumberStr);
                System.out.println("Test int output - " + lastNumberInt);
                inputList.add(lastNumberInt);
            }

然后比较最大值

int currentBranchCode = 0;
        for (Integer CCS : companyArrayList) {
            if (currentBranchCode <= CCS) {
                currentBranchCode = CCS;
            }
        }

然后

currentBranchCode =currentBranchCode +1;
String codegenerate="D"+currentBranchCode;

你必须尝试。

答案 2 :(得分:1)

这可以在几行中完成:

int i = Intger.parseInt(input.replaceAll(".*(?<!\\d)(\\d+)", "$1");
String next = input.replaceAll("(.*)(?<!\\d)\\d+", "$1"+ ++i);