2011-12-08 75 views
4

文字列:RoomA38があります。 RoomAから抽出し、String型のオブジェクトに入れたい場合は、38を2つの異なる型intに入れてください。メソッド分割について考えましたが、この場合にどのように使用するのか分かりません。どうすればいいですか?文字列から文字列と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

なぜ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); 
} 
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 
関連する問題