Cómo recorrer una cadena y luego encontrar si una parte de esa cadena se encuentra en una arrayList

kyrie3:

Lo que estoy tratando de hacer es encontrar bucle a través de una cadena a continuación, coincide con un ArrayList.

Por ejemplo, Tengo este código de trabajo:

import java.io.*;
import java.text.ParseException;
import java.util.*;

public class Test_Mark4 {
    public static ArrayList<String> patterntoSearch;
    public static void main(String[] args) throws IOException, ParseException {
        String text = "Lebron James";
        patterntoSearch = new ArrayList();
        patterntoSearch.add("Lebron James");
        patterntoSearch.add("Michael Jordan");
        patterntoSearch.add("Kobe Bryant");
        System.out.println(patterntoSearch);
        System.out.println(text);
        boolean valueContained = patterntoSearch.contains(text);
        System.out.println(valueContained);
    }
}

Sin embargo, lo que si puedo reemplazar String text = "Lebron James";con String text = "Lebron James 2017-218 NBA Hoops Card";? Es evidente que existe la cadena Lebron Jamesen esa cadena, pero se mezcló con otras palabras, así (que no me importa, y sólo se preocupan por la cadena Lebron James. He pensado en un forbucle pero no está seguro de cómo construirlo.

Andrónico:

Puede utilizar expresiones regulares para ello:

patterntoSearch.stream()
    .anyMatch(s -> text.matches(".*" + s + ".*"));

Esto devuelve booleanque indican si cualquier elemento en patterntoSearchestá contenida en text.

patterntoSearch.stream()
    .filter(s -> text.matches(".*" + s + ".*"))
    .collect(Collectors.toList());

Esto devolverá una lista de palabras patterntoSearch, que están contenidos en text. Si desea que sólo uno, entonces:

patterntoSearch.stream()
    .filter(s -> text.matches(".*" + s + ".*"))
    .findAny()
    .orElse(null);

He pasado nullpor defecto, pero se puede proporcionar ninguna String.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=296278&siteId=1
Recomendado
Clasificación