Java 提取由整数和换行符分隔的字符串
我有一个方法,它以单个字符串的形式从数据库返回一个学生记录列表,其中每行以换行开始,然后是学生ID(整数),每行以换行结束。它看起来像这样:Java 提取由整数和换行符分隔的字符串,java,Java,我有一个方法,它以单个字符串的形式从数据库返回一个学生记录列表,其中每行以换行开始,然后是学生ID(整数),每行以换行结束。它看起来像这样: String results; //This is your list of students String list[] = results.split("\n"); Map students<String, String> = new HashMap<String, String>(); for(String studen
String results; //This is your list of students
String list[] = results.split("\n");
Map students<String, String> = new HashMap<String, String>();
for(String student : list){
String splitted[] = student.split(" ",2);
students.put(splitted[0], student);
}
System.out.println("Info of student 203: " + students.get("203"));
1 John Doe 4.0非居民Steve Jobs不适用互联网安全不适用
203无名氏2.4居民比尔·盖茨不适用Tree Lutz不适用
4343 Chris Farley 4.2居民B奥巴马n/a向上交易PEI
我只需要提取学生ID请求的记录。例如,如果用户请求ID#203,程序将打印:
203无名氏2.4居民比尔·盖茨不适用Tree Lutz不适用
我已经研究了模式匹配和正则表达式,但它们似乎需要特定的字符,我不确定如何按我想要的int进行解析。我不知道如何在字符串中循环并仅获取以请求的ID开头的字符串。我不要求您做家庭作业,但任何提示都将不胜感激。如果您需要使用正则表达式,您可以使用
\d
来识别数字或数字,并使用\n
来换行符。看看我想你可以试试这样的东西:
String results; //This is your list of students
String list[] = results.split("\n");
Map students<String, String> = new HashMap<String, String>();
for(String student : list){
String splitted[] = student.split(" ",2);
students.put(splitted[0], student);
}
System.out.println("Info of student 203: " + students.get("203"));
希望它对你有用,或者至少能给你一个想法 您也可以使用
regex
来实现这一点。假设学生id后面有一个空格(或多个空格),您可以执行以下操作:
int studentId = 203;
String regex = "(.|\\n)*(" + studentId + "\\s+[^\\n]+)(\\n)*(.|\\n)*";
String studentRecords = "1 John Doe 4.0 Nonresident Steve Jobs n/a Internet Security n/a\n\n203 Jane Doe 2.4 Resident Bill Gates n/a Tree Lutz n/a\n\n4343 Chris Farley 4.2 Resident B Obama n/a Trades Up PEI";
String currentStudent = studentRecords.replaceAll(regex, "$2");
System.out.println(currentStudent);
控制台:
203 Jane Doe 2.4 Resident Bill Gates n/a Tree Lutz n/a
你必须使用正则表达式吗?为什么不将字符串按换行符拆分为一个数组,并返回以您要查找的数字开头的字符串(加上一个空格,这样您就不匹配2033)。