Как использовать строку для проверки того, что она содержит только цифры после первого символа - PullRequest
2 голосов
/ 28 марта 2019

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

Так и должно быть a1234.

Я пытался создать базовый вариант, базовый вариант меньшего размера и общий вариант, но, похоже, не могу понять, как правильно его стилизовать:

public void digitCheck(String s) {

   if () //To Check that first character is a letter

   else if ()To check that everything after the first letter is a number

   else //Invalid
}

Мне нужнокод для сообщения, является ли это допустимой строкой, если первый символ является строчной буквой и все, что после этого является числом .

Пример:
a123 -> действует .
ab123 -> недействительно .

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Используйте метод String.matches ():

boolean valid = s.matches(".\\d+");
0 голосов
/ 28 марта 2019

Для решения этой проблемы с рекурсией по вашему шаблону вы можете сделать:

  • начало с конца и
  • отметьте последний элемент
  • удалить последний элемент
  • назови всю оставшуюся часть

Следует проверять, пока один метод не будет передан методу -> выполнить окончательную проверку, если это строчная буква.

Кроме того, StringUtils класс используется из библиотеки commons lang .

Вот фрагмент кода:

public class StringValidationDemo {
    public boolean validateStringRecursive(String str) {
        if (str.length() == 1) {
            return StringUtils.isAlpha(str) && StringUtils.isAllLowerCase(str);
        }

        String lastIndex = str.substring(str.length() - 1);
        return StringUtils.isNumeric(lastIndex)
                && validateStringRecursive(str.substring(0, str.length() - 1));
    }

    public static void main(String[] args) {
        List<String> words = Arrays.asList("a123", "ab123", "123ab", "A123", "aaa", "123");

        StringValidationDemo demo = new StringValidationDemo();
        for (String word : words) {
            System.out.printf("validation for: %s = %s\n",
                    word, demo.validateStringRecursive(word));
        }
    }
}

Выход:

validation for: a123 = true
validation for: ab123 = false
validation for: 123ab = false
validation for: A123 = false
validation for: aaa = false
validation for: 123 = false
0 голосов
/ 28 марта 2019

Я думаю, что вы можете пропустить первый символ в строке, а затем просто проверить с Integer.parseInt (String). так это будет выглядеть примерно так:

public static boolean isNumeric(String strNum) {
    try {
        double d = Integer.parseInt(String);
    } catch (NumberFormatException | NullPointerException nfe) {
        return false;
    }
    return true;
}

public void DoStuff(String string){
    if (isNumeratic(string.substring(1)) //ommits first
    {
      ///yourstuff
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...