2011-12-08 50 views
4

我有一个字符串:RoomA38。我想从中提取RoomA并放入一个String类型的对象,提取38,并将它们放在两个不同类型的int.I中,考虑到方法split,但我不知道如何在这种情况下使用它。我该怎么做?从字符串中提取字符串和int

+0

它总是会格式的所期望的结果:''? – codaddict

+0

yes.it将永远如此 – Mazzy

回答

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 
} 
0

使用下面这行,你可以找出一个char是一个数字。 Character.isDigit('');

你可以遍历字符串中的每个char并相应地提取有用的字符。

0

您可以从字符串中提取数字后写你自己的逻辑来也分开数字。

感谢 苏尼尔

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); 
    } 

} 
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)); 
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); 
0

为什么不使用正则表达式?

@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); 
} 
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