如何在 Java 中使用 String 類型的 ArrayList 搜索 String 值?

程序員

我有一個城市列表,想從這些城市中搜索:

 ArrayList myCities; // list of cities 
 String searchString = scanner.nextLine();

    List<String> matchedCities = new ArrayList(); // an empty list for storing matched cities

    for(String c : myCities){
        
        if(c.matches("(?i)" + searchString + ".*")){
               matchedCities.add(c);
           }
    }

例如。apple 如果它是當前數組中的一個元素,則 c 返回 apple of if ap 輸入或 apple 但不返回 ppl。

這僅適用於城市以或開頭/首字母開頭的情況,但是我希望如果用戶從中間輸入字符串,它應該返回建議的城市;

例如,如果用戶輸入 ppl,它應該返回 apple,或任何包含 ppl 的單詞,無論它是開頭還是包含在中間或結尾。

亞歷克斯·魯登科

String::matches隱式檢查整個字符串就好像應用了“^”和“$”錨點一樣,因此檢查中間值的一個小修復是更新正則表達式以允許任何前綴".*"

此外,可能需要放置searchStringbetween\Q\Eto enable search by string literal,並自動轉義可能為正則表達式保留的字符。

if (c.matches("(?i).*\\Q" + searchString + "\\E.*")){
    matchedCities.add(c);
}

另一種選擇是將searchString和 列表中的元素都轉換為相同的大小寫並使用contains.

使用 Stream API 的示例實現:

String search = searchString.toLowerCase();
List<String> matchedCities = cities
    .stream()
    .filter(c -> c.toLowerCase().contains(search))
    .collect(Collectors.toList());

更新

要返回/打印字的一部分下面search的字符串,String::substringString::indexOfString::length可用於:city.substring(city.indexOf(search) + search.length())

String search = searchString.toLowerCase();
List<String> afterMatch = cities
    .stream()
    .filter(c -> c.toLowerCase().contains(search))
    .map(c -> c.substring(c.indexOf(search) + search.length()))
    .peek(System.out::println) // print the part after the search
    .collect(Collectors.toList());

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Flutter 需要一個“int”類型的值,但得到一個“String”類型的值

如何使用構造函數將 List<T> 類型的變量設置為 ArrayList<T> 類型的值

Konvertieren von 'ArrayList <String> in' String [] 'in Java

Transponieren Sie ArrayList <ArrayList <String >> in Java

如何在 Java 中使用泛型

Java ArrayList String Selection Sort

ArrayList<int[]> in String umwandeln (Java)

致命錯誤 com.google.firebase.database.DatabaseException:無法將 java.lang.String 類型的值轉換為 long

如何在 React 中使用 EventListener 類型?

類型 'string' 不能用於索引類型 'GenericObject'

使用模板參數時,如何製作條件語句以忽略 std::string 類型?

如何告訴 dart 不將 map 轉換為 <String, String> 類型而讓它成為 <String, Object> 類型?

java:不兼容的類型:T 無法轉換為 java.lang.String

期望類型為 'String' 的值,但得到類型為 'Null' 的值。這是一個電子商務應用程序

無法將類型值(又名 'Array<Dictionary<String, Style>>')分配給(又名 'Dictionary<String, Style>')

String in ArrayList <String []>

類型錯誤:類型 'string[]' 不能用作索引類型

未處理的異常:“Null”類型不是“String”類型的子類型

“int”類型不是 Flutter 中“String”類型的子類型

`string & {}` 的打字稿奇怪的類型交集

Java - ArrayList remove () funktioniert nicht [String übergeben]

ArrayList<String> in Java, [€14,€55,€500]

Duplikate entfernen von Arraylist <String []> - java

wie man arrayList als String in Java druckt

Java ArrayList<String> innerhalb der abstrakten Klasse

Konvertieren Sie String in verschachtelte ArrayList in Java

Sortieren einer String ArrayList mit Zahlen Java

未處理的異常:類型“String”不是類型轉換中“DateTime”類型的子類型

Effiziente Konvertierung von ArrayList <String []> in mehrzeiligen String in JAVA

TOP Liste

  1. 1

    Modbus Python Schneider PM5300

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  4. 4

    Elasticsearch startet nicht nach dem Laden in viele Daten

  5. 5

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  6. 6

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  7. 7

    Eclipse Oxygen - Projekte verschwinden

  8. 8

    Wie kann ich den Kaskadenmodus global einstellen?

  9. 9

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  10. 10

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  11. 11

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

  12. 12

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  13. 13

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  14. 14

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  15. 15

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  16. 16

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  17. 17

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  18. 18

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  19. 19

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  20. 20

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  21. 21

    So erstellen Sie ein langes Etikett inline mit einem Eingabefeld

heißlabel

Archiv