考虑以下示例,
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的字符串数组
你可以这样做:
for (String retval: str.split(";")){
String[] parts = retval.split(":");
String neededPart = parts[1];
// do your stuff with your neededPart
}
首先,用分号拆分字符串以获取每个键值对。然后用冒号分割每个部分。
首先尝试获取 Colan(:) 和 semicolan(;) 之间的数据。将检索到的数据添加到字符串数组中。尝试打印它。使用 StringTokenizer 类获取 colan 和 semicolan 之间的数据。
理想情况下,您想使用正则表达式来做到这一点:
为简单起见,请考虑: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
}
您可以使用正则表达式。这个想法是匹配和之间的字符链(\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
,如您在示例中所见。
您可以使用 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);
}