2011-12-08 82 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