我必须使用int值“nid”来处理。但是这个int值应该是int“did”和String“a”的组合!
int did = 123456;
String a = "_b";
int nid = Integer.parseInt((did+a).toString());
但对于此代码,我收到错误消息
java.lang.NumberFormatException: For input string: "123456_b"
有没有办法将int和string的组合转换为int?
答案 0 :(得分:0)
有没有办法将int和string的组合转换为int?
仅当字符串是数字值时
这不是你的情况。
Integer.parseInt(String)
等待String参数,该参数是可解析的整数。
但是你永远不能使用"_b"
String
作为整数值的有效部分。
但是,您可以将计算存储为字符串:
int did = 123456;
String a = "_b";
String nid = did + a;
答案 1 :(得分:0)
如果我理解正确,你有一个字符串" 123456_b",并且你想要检索它的数字部分。我是对的吗?
在这种情况下,您可以使用正则表达式 - "(d +)[_ a-zA-Z]"。让我们假设数字部分以下划线字符(_)结尾。这就是我把它放入正则表达式的原因。我使用组(d +)来捕捉数字部分。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "1234567_abcde";
Pattern pattern = Pattern.compile("(\\d+)[_]?[a-zA-Z]");
Matcher matcher = pattern.matcher(str);
if (!matcher.find()) {
System.out.println("Did not find a numeric part.");
return;
}
String numericGroup = matcher.group(1);
System.out.println(numericGroup);
int number = Integer.parseInt(numericGroup);
System.out.println(number);
}
}
答案 2 :(得分:0)
首先删除非数字字符,然后尝试解析它
String str = did+a;
str = str.replaceAll("/[^0-9]/g", "");
int nid = Integer.parseInt(str);
答案 3 :(得分:0)
我不明白你想要什么。 错误是正常的, b 不是数字,您不能将 nid 声明为int。
也许您只想将 与连接连接?
在这种情况下, nid 必须是String,而不是int。