извлечь строку и int из строки - PullRequest
4 голосов
/ 08 декабря 2011

У меня есть строка: RoomA38. Я хочу извлечь из него RoomA и вставить объект типа String, извлечь 3 и 8 и поместить их в два разных типа int. Я думал о методе split, но я не знаю, как его использовать. это в этом случае. Как я могу это сделать?

Ответы [ 9 ]

3 голосов
/ 08 декабря 2011

Не могли бы вы сделать что-то подобное?

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
}
2 голосов
/ 08 декабря 2011

Вы можете сделать это по-разному, вам просто нужно некоторое вычисление, нет никаких конкретных 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);
1 голос
/ 08 декабря 2011
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 голосов
/ 08 октября 2012

Извлеките желаемый результат, используя регулярное выражение и сопоставление с образцом в 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 
0 голосов
/ 08 декабря 2011

Почему бы не использовать 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 голосов
/ 08 декабря 2011

, если формат всегда один и тот же:

    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));
0 голосов
/ 08 декабря 2011

После этого вы можете извлечь числа из строки и написать собственную логику для разделения чисел.

Спасибо, Sunil

0 голосов
/ 08 декабря 2011

используя следующую строку, вы можете узнать, является ли char цифрой.Character.isDigit ('');

вы можете перебирать каждую строку char и извлекать соответствующие символы соответственно.

0 голосов
/ 08 декабря 2011

Вы можете использовать сканер для этого: http://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...