如果字符串在ArrayList中,我如何查看字符串中的第四个元素?

时间:2015-04-23 14:01:54

标签: java string arraylist substring

我有这个数组列表:

[Staff 77778 Julie Chang Registrar, Adjunct 19778 Mike Thompson CS mtxxx@gmail.com GITC2400, Staff 30041 Anne Mathews Security, Junior 98444 Serene Murray Math smyyy@gmail.com]

对于数组列表中的每个字符串,第四个元素是姓氏。 我必须搜索整个数组列表(实际上是17个元素,但我将列表缩短为4个元素以便提出这个问题),每当我看到用户正在搜索的姓氏时,我必须返回整个包含该姓氏的字符串。 My Scanner对象将位于名为DirectoryServer.java的单独类中。

我创建了这个伪代码: 1)对于数组列表中的每个字符串,请查看第4个字 2)如果用户搜索=第4个单词,则该目录包含该人(忽略大小写) 3)返回包含姓氏的所有字符串

我尝试编写代码,但我对如何查看每个字符串的第四个单词感到困惑,如果它包含姓氏,我如何返回整个字符串,以及如何忽略大小写。

  public boolean find(String LastName) {
  boolean inDir = false;
  for (int i = 0; i < dir.size; i++) {
     String info= dir[i];
     String[] splitInfo = info.split(" ");
     if splitInfo.contains(LastName) {
        inDir = true;
     }
     return inDir
  } 
}

6 个答案:

答案 0 :(得分:1)

只需使用String[] words = info.split(" ")拆分字符串(或者您可能希望将空格的正则表达式用于空格)。

然后执行words.length>4 && searchName.equalsIgnoreCase(words[3])

如果匹配则返回info

答案 1 :(得分:1)

让我们简化您的问题。您已经知道如何迭代ArrayList

让我们假设我们在字符串str上进行迭代。您需要做的就是检查第四项工作是否为searchName,如果是,您要返回整个字符串:

  • info.split("\\s+")将根据1个或多个空格

  • 拆分字符串
  • 检查是否存在第四个元素(非常重要)并将其与您想要的任何内容进行比较String#equalsIgnoreCase

  • 如果是这样,请返回info字符串或str(我并不完全了解您要返回的内容)

请注意,\s是匹配单个空格的正则表达式,\s+匹配一个或多个空格,而在Java中,\应该被转义,结果将是{{1 }}

答案 2 :(得分:1)

public boolean find(String LastName) {
  boolean inDir = false;
  for (int i = 0; i < dir.size; i++) {
     String info = dir[i];
     //Splits the string by space.
     String[] splitInfo = info.split(" ");
     //Checking if the string array has 4 elements in it.
     if(splitInfo.size() >= 4){
         //Taking fourth element and checking with lastname(case ignored)
         if splitInfo[3].equalsIgnoreCase(LastName) {
            //If equals returning the whole string.
            return info;
         }
     // Else returning false
     return inDir
  } 
}

答案 3 :(得分:1)

您可以从String API查看split()方法。 根据字符空间“”拆分列表中的每个字符串,并获取结果的第4个元素。 类似的东西:

String myString = "Staff 77778 Julie Chang Registrar";
String[] parts = myString.split(" ");
String lastName = parts[3]; // Chang

答案 4 :(得分:0)

编辑:快速解释。

       
  • 使用for循环遍历列表。
  •    
  • 拆分空格字符上的当前元素,存储在数组中。
  •    
  • 从数组中检索第4个元素,即姓氏。
  •    
  • 如果第4个元素与&#34; LastName&#34;匹配你正在寻找,回归真实。
public boolean find(String LastName, List<String> toSearch) {
    boolean inDir = false;
    for (String element : toSearch) {
        String[] splitInfo = info.split(" ");
        String thisLastName = splitInfo[3];
        if (LastName.equalsIgnoreCase(thisLastName) {
            return true;
        }
    }
    return inDir
}

答案 5 :(得分:0)

我认为你的代码存在一些缺陷,试试这个:

public boolean find(String lastName) {
  boolean inDir = false;
  lastName = lastNamer.toLowerCase();
  for (int i = 0; i < dir.size(); i++) {     //Assuming dir is your arrayList
   String info = dir.get(i);
   String info = info.toLowerCase();
   String[] splitInfo = info.split(" ");

   if(splitInfo[3].equals(lastName))    //spliInfo[3] will always contain a last name
      inDir = true;
  return inDir
  } 
}