我有一个字符串:RoomA38
。我想从中提取RoomA
并输入一个String类型的对象,提取3
和8
并将它们放在两个不同类型的int中。我想到了方法拆分但我不知道在这种情况下我不知道如何使用它。我该怎么办?
答案 0 :(得分:3)
String myString = "RoomA38";
StringBuilder sb = new StringBuilder();
List<Integer> numbers = new ArrayList<Integer>();
for(int i=0;i<myString.length();i++){
char c = myString.charAt(i);
if(!Character.isDigit(c)){
sb.append(c);
}else{
numbers.add(Integer.parseInt(c+""));
}
}
String roomString = sb.toString();
for(Integer i : numbers){
//use the number i
}
答案 1 :(得分:2)
你可以通过各种方式做到这一点,你只需要一些计算,没有任何特定的api或内置方法。 以下也是一种方法。
String str = "RoomA38";
int number = 0;
String[] strArr = str.split("\\d");
str = str.replace(strArr[0], "");
number = Integer.parseInt(str);
System.out.println("Numbers::: " + number);
str = strArr[0];
System.out.println("String is:::: " + str);
答案 2 :(得分:1)
public static void main(String[] args) {
String str = "RoomA3814221";
String pattern = "[0-9]+";
Scanner sc = new Scanner(str);
String result = sc.findInLine(pattern);
String[] arr = result.split("");
System.out.println(result);
System.out.println(arr.length);
for (String s: arr) {
System.out.println(s);
}
}
答案 3 :(得分:0)
答案 4 :(得分:0)
使用以下行,您可以了解char
是否为数字。
Character.isDigit( '');
你可以迭代字符串中的每个char
并相应地提取有用的字符。
答案 5 :(得分:0)
您可以在编写自己的逻辑之后从字符串中提取Numbers以分隔数字。
由于 苏尼
答案 6 :(得分:0)
如果格式始终相同:
String value = "RoomA38";
String room = value.substring(0, 5);
Integer floor = Integer.valueOf(value.substring(5,6));
Integer roomNumber = Integer.valueOf(value.substring(6,7));
答案 7 :(得分:0)
为什么不使用RegEx?
@Test
public void splitString() {
final String src = "RoomA38";
final Pattern pattern = Pattern.compile("(\\D*)(\\d*)");
final Matcher matcher = pattern.matcher(src);
matcher.matches();
final String resultString = matcher.group(1);
final int resultInt = Integer.valueOf(matcher.group(2));
Assert.assertEquals("RoomA", resultString);
Assert.assertEquals(38, resultInt);
}
答案 8 :(得分:0)
使用java中的正则表达式和模式匹配提取所需的结果
String chars;
int result2,result3;
String str= "RoomA38";
String regex ="([a-zA-Z]+)([0-9]{1})([0-9]{1})";
Matcher matcher = Pattern.compile( regex ).matcher( str);
while (matcher.find( ))
{
result = matcher.group(1);
result2 =Integer.parseInt(matcher.group(2));
result3 = Integer.parseInt(matcher.group(3));
System.out.println("chars="+result+" "+"number1="+result2+" "+"number2="+result3);
}
chars=RoomA number1=3 number2=8