簡體   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