Проверьте строку на заглавную букву и найдите позицию

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

Pattern p = Pattern.compile("[^A-Z]", Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(sir);
    boolean b = m.find();

так что я проверяю, есть ли заглавная буква, тогда мне нужно добавить назначение и удаление. я не уверен, если это работает. Также я нашел другой способ:

StringTokenizer stringTokenizer = new StringTokenizer(sir);

    while (stringTokenizer.hasMoreTokens()) {
        String a = stringTokenizer.nextToken();
        if(a.equals(a.toUpperCase())) {
            upper = a; 
        }
    }

верхний возвращает ноль каждый раз, даже если sir = cL

Кто-нибудь знает способ:

  1. получить заглавную букву и позицию из строки
  2. удали это

Любая помощь приветствуется.

3 ответа

Решение

Чтобы удалить все буквы в верхнем регистре из строки:

String repl = sir.replaceAll("[A-Z]+", "");

Чтобы скопировать все буквы UPPERCASE из строки в другую строку:

String upper = sir.replaceAll("[^A-Z]+", "");

Вы также можете попробовать библиотеки "гуавы". Там вы можете найти множество классов для работы со строками. Среди них CharMatcher ( https://code.google.com/p/guava-libraries/wiki/StringsExplained)

Простой пример кода может быть:

 String string = "ABcdEFgh45";
 String withoutUpperCase = CharMatcher.JAVA_UPPER_CASE.removeFrom(string);
 //returns cdgh45

Это даст вам все заглавные буквы в строке:

String inputString;

String outputString = "";

for (int i = 0; i < inputString.length; i++) { c = inputString.charAt(i); ouptutString += Character.isUpperCase(c) ? c + " " : ""; }

Другие вопросы по тегам