从java中的给定字符串中提取字符串

时间:2013-05-27 11:44:52

标签: java string

考虑以下示例,

String str = "Record of student " + 
              "Name: Aasim ; Surname: Khan; Age: 15 ; Weight: 60; " + 
              "School : Abcd High School This is record of Student";

我想要包含 Aasim,Khan,60,Abcd High School

的字符串的提取数组

6 个答案:

答案 0 :(得分:4)

你可以这样做:

   for (String retval: str.split(";")){
           String[] parts = retval.split(":");
           String neededPart = parts[1];
           // do your stuff with your neededPart
     }

答案 1 :(得分:0)

首先,用分号分割字符串以获取每个键值对。然后用冒号分割每个部分。

答案 2 :(得分:0)

首先尝试在Colan(:)和semicolan(;)之间获取数据。将已检索的数据添加到字符串数组中。尝试打印它。使用StringTokenizer类获取colan和semicolan之间的数据。

答案 3 :(得分:0)

理想情况下,您希望使用正则表达式:

为简单起见,请考虑:String str = "Record of student " + "Name: Aasim ; Surname: Khan;

import java.util.Pattern.*;
Pattern p = Pattern.compile("Record of student Name:(.*) ; Surname:(.*).*")
Matcher m = p.matcher(str)
if(m.matches()){
   String name = m.group(1);
   //so on
}

答案 4 :(得分:0)

您可以使用正则表达式。我们的想法是匹配\w:之间的字符链(;是regexp中的字母数字字符),如下面的示例代码所示:

Pattern p = Pattern.compile(".* : (\\w+) ; .*");
Matcher m = p.matcher(str);
if(m.matches()) {
    System.out.println("The first substring is: " + m.group(1));
}

然后,如示例中所示,所有子字符串都位于m中。

答案 5 :(得分:0)

您可以使用StringTokenizer作为下面的例子:

String str = "Record of student Name: Aasim ; Surname: Khan; Age: 15 ; Weight: 60; School : Abcd High School This is record of Student";

    ArrayList<String> tokens1=new ArrayList<>();
    ArrayList<String> tokens2=new ArrayList<>();


    StringTokenizer s1=new StringTokenizer(str, ";");
    while (s1.hasMoreElements()) {
        tokens1.add((String) s1.nextElement());
    }

    for (String string : tokens1) {
        System.out.println(string);
        StringTokenizer s2=new StringTokenizer(string, ":");

        int i=0;
        while (s2.hasMoreElements()) {
            s2.nextElement();
            tokens2.add((String) s2.nextElement());
        }
    }
    for (String string : tokens2) {

        System.out.println(string);
    }