Regex, чтобы найти знак @ в строке - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужна помощь с моим регулярным выражением, чтобы он мог определить, есть ли знак @ в строке, которую я ищу.

import java.util.regex.*;
public class OnlineNewspaperSubscription extends NewspaperSubscription
{
    public void setAddress(String a)
    {

         address = a;

        // Creating a pattern from regex
        Pattern pattern
            = Pattern.compile("@*");

        // Get the String to be matched
        String stringToBeMatch = a;

        // Create a matcher for the input String
        Matcher matcher = pattern.matcher(stringToBeMatch);

       if(matcher.matches())
        {
            super.rate = 9;

        }
       else
        {
            super.rate = 0;
            System.out.println("Need an @ sign");
        }

    }

}

Я должен быть в состоянии сказать, является ли эта строка адресом электронной почты или нет.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Вам не нужно регулярное выражение, чтобы найти индекс '@' в String;используйте String.indexOf(int) (передавая char).Мол,

int p = a.indexOf('@');
if (p > -1) {
    // ...
}
0 голосов
/ 04 апреля 2019

Вам не нужно использовать регулярные выражения для этого, это избыточное убийство. Вы можете просто использовать метод contains() из класса String, доступного в Java 1.5 (если я правильно помню). Этот метод действительно использует внутренне indexOf().

System.out.println("Does not contain :" + "Does not contain".contains("@"));
System.out.println("Does cont@in :" + "Does not cont@in".contains("@"));

выход:

Does not contain @:false
Does contain @:true

Примечания:

Если то, что вы хотите сделать, это проверить формат адреса электронной почты, проверки наличия @ недостаточно, я бы порекомендовал используя регулярное выражение для этого.

Пример : https://stackoverflow.com/a/8204716/8794221

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...