我的数据库表中有一些字符串类型数据,如D-101
和D-102
。
我想自动获取前端的下一个数据(一个JSF Web应用程序)以发送到D-103
的数据库。
为此我想从字符串中只获取int数据。
我该怎么做?
答案 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);