从字符串中提取字符串和int

时间:2011-12-08 11:20:43

标签: java string

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

9 个答案:

答案 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