Pregunta

Estoy tratando de escribir un pequeño programa en Java que acepte un archivo (usando la clase escáner), devuelva el archivo como una cadena y, a continuación, buscar esa cadena para cualquier instancia de una subcadena que empieza por "Correo electrónico:" y terminando con ".edu". Habrá muchos ejemplos de esta subserie, cada uno de los cuales quiero analizar a cabo en una matriz o un nuevo archivo.

Yo sé cómo encontrar una subcadena, pero no sé cómo a) Búsqueda de todas las instancias de la subcadena y B) especifica el inicio y el final de la subcadena.

Puede alguien ayudarme con esta lógica?

Gracias!

¿Fue útil?

Solución

Esto suena como un caso de expresiones regulares para mí:

import java.util.regex.*;

public class Test
{
    private static final Pattern EMAIL_PATTERN = Pattern.compile
        ("Email:(.*?\\.edu)");

    public static void main(String[] args)
    {
        String testString = "FooEmail:jjj@xyz.edu Bar Email:mmm@abc.edu Baz";

        printEmails(testString);
    }

    public static void printEmails(String input)
    {
        Matcher matcher = EMAIL_PATTERN.matcher(input);
        while (matcher.find())
        {
            System.out.println(matcher.group(1));
        }
    }
}

Tenga en cuenta que usted va a obtener resultados extraños si tiene alguna e-mails no .edu allí ... por ejemplo, si usted tiene "e-mail: foo@bar.com Email: un @ b. edu" que acabaría con un partido de 'foo@bar.com correo electrónico:. a@b.edu'

Otros consejos

Se puede usar indexOf (). Creo que se puede decir que dónde buscar a partir también. Así que para encontrar a las instancias del "e-mail:":

while(index < input.size()){
  substringLocation = input.indexOf("Email:", index);
  // do something with substring
  index = substringLocation;
}
private static final Pattern EMAIL_PATTERN = Pattern.compile
    ("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)"); 

va a resolver el problema y ITT trabajará para cualquier patrón de correo electrónico como abc.co.in xyz.com o dominios test.fileserver.abc.co.bz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top