繁体   English   中英

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

[英]java - How can I look at the fourth element in a string if the strings are in an ArrayList?

我有这个数组列表:

[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个元素),每当看到用户正在搜索的姓氏时,我都必须返回整个数组包含姓氏的字符串。 我的扫描仪对象将在名为DirectoryServer.java的单独类中。

我创建了此伪代码:1)对于数组列表中的每个字符串,查看第4个单词2)如果用户search =第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
  } 
}

只需使用String[] words = info.split(" ")拆分字符串(或者您可能想将regex用于空格)。

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

如果匹配,则返回info

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

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

  • info.split("\\\\s+")将根据1个或多个空格分割字符串

  • 检查是否存在第四个元素( 非常重要 ),并使用String#equalsIgnoreCase将其与您想要的任何元素进行比较

  • 如果是这样,请返回info字符串或str (我不太清楚您要返回什么内容)

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

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
  } 
}

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

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

编辑:快速解释。

  • 使用for每个循环遍历列表。
  • 将当前元素拆分为空格字符,存储在数组中。
  • 从数组中检索第4个元素,即姓氏。
  • 如果第4个元素与您要搜索的“姓氏”匹配,则返回true。
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
}

我认为您的代码有一些缺陷,请尝试以下操作:

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
  } 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM