-8

考虑以下示例,

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的字符串数组

4

6 回答 6

4

你可以这样做:

   for (String retval: str.split(";")){
           String[] parts = retval.split(":");
           String neededPart = parts[1];
           // do your stuff with your neededPart
     }
于 2013-05-27T11:51:27.623 回答
0

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

于 2013-05-27T11:48:03.073 回答
0

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

于 2013-05-27T11:52:53.283 回答
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
}
于 2013-05-27T11:55:44.300 回答
0

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

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

然后所有子字符串都将在 中m,如您在示例中所见。

于 2013-05-27T11:56:05.833 回答
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);
    }
于 2013-05-27T12:00:20.900 回答