从字符串中提取字符串和int
问题描述:
我有一个字符串:RoomA38
。我想从中提取RoomA
并放入一个String类型的对象,提取3
和8
,并将它们放在两个不同类型的int.I中,考虑到方法split,但我不知道如何在这种情况下使用它。我该怎么做?从字符串中提取字符串和int
答
你能做这样的事吗?
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
}
答
使用下面这行,你可以找出一个char
是一个数字。 Character.isDigit('');
你可以遍历字符串中的每个char
并相应地提取有用的字符。
答
您可以从字符串中提取数字后写你自己的逻辑来也分开数字。
感谢 苏尼尔
答
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);
}
}
答
如果格式总是相同的:
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));
答
您可以通过不同的方式做到这一点,你只需要一些计算就没有任何特定的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);
答
为什么不使用正则表达式?
@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);
}
答
提取使用正则表达式和模式匹配在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
它总是会格式的所期望的结果:''? –
codaddict
yes.it将永远如此 – Mazzy