Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中提取字符串和int_Java_String - Fatal编程技术网

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

Java 从字符串中提取字符串和int,java,string,Java,String,我有一个字符串:RoomA38。我想从中提取RoomA并放入一个String类型的对象,提取3和8并将它们放入两个不同的int类型。我想到了拆分方法,但我不知道在这种情况下如何使用它。我该怎么做呢?您可能想使用Scanner进行此操作:使用下面的行,您可以找出字符是否是数字。 字符.isDigit(“”) 您可以迭代字符串中的每个字符,并相应地提取有用的字符。您可以这样做吗 String myString = "RoomA38"; StringBuilder sb = new StringBui

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

您可能想使用Scanner进行此操作:

使用下面的行,您可以找出字符是否是数字。 字符.isDigit(“”)


您可以迭代字符串中的每个
字符
,并相应地提取有用的字符。

您可以这样做吗

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
}
String myString=“RoomA38”;
StringBuilder sb=新的StringBuilder();
列表编号=新的ArrayList();
对于(int i=0;i您可以从字符串中提取数字,然后编写自己的逻辑来分隔数字。

谢谢
Sunil

如果格式始终相同:

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

您可以通过各种方式来实现这一点,您只需要进行一些计算,因为没有任何特定的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);
为什么不使用正则表达式呢

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

在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 

它的格式是否总是:
?是的,它总是这样
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