Java манипуляции со строками для достоверности - PullRequest
0 голосов
/ 08 февраля 2020

Скажем, например, у меня есть эта строка:

"Его зовут Джастин Хоффман"

и нужно проверить, является ли оно действительным именем:

Чтобы это вернулось, мне нужно убедиться, что у меня есть «Его имя» перед «есть», а мне нужно «Джастин Хоффман» после «это», как я могу проверить, есть ли у меня правильная подстрока перед "is" и правильный после "is"

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020
String input = "His name is Justin Hoffman";

String requiredFirstName = "His name";
String requiredLastName = "Justin Hoffman";
String delimiter = " is ";

// Example 1
if (input.equals(requiredFirstName + delimiter + requiredLastName))
{
    System.out.println("The input is OK");
}

// Example 2
int posi = input.indexOf(delimiter);
if (posi > 0) // found
{
    String leftPart = input.substring(0, posi);
    String rightpart = input.substring(posi + delimiter.length());
    if (requiredFirstName.equals(leftPart) && requiredLastName.equals(rightpart))
    {
        System.out.println("The input is OK");
    }
}

// Example 3
String[] parts = input.split(delimiter);
if (requiredFirstName.equals(parts[0]) && requiredLastName.equals(parts[1]))
{
    System.out.println("The input is OK");
}

Второй пример, возможно, самый быстрый, потому что он не создает временных строк. Третий пример - самый медленный. Будьте осторожны со специальными символами в разделителе, потому что функция split() интерпретирует аргумент как регулярное выражение.

0 голосов
/ 08 февраля 2020
String sentence = "His name is Justin Hoffman";
String[] splitSentence = sentence.split(" is ");
String first = splitSentence[0]; // His name
String second = splitSentence[1]; // Justin Hoffman
boolean isTrue = (first.equals("His name") && second.equals("Justin Hoffman"));
...