Regex для преобразования набора маленьких букв в прописные в строке - PullRequest
0 голосов
/ 30 апреля 2019

Может кто-нибудь сказать мне, как мне написать регулярное выражение, которое заменяет все символы "aeiou", найденные в моей строке, заглавными буквами, такими как "AEIOU" и наоборот?

Я хотел использовать метод replaceAll класса Java String, но не уверен насчет regEx.

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Это может быть решением.

Мне кажется, что для использования метода replaceAll требуется Java 9.Прочитайте это Используйте Java и RegEx для преобразования регистра в строку

public class Main {
public static final String EXAMPLE_TEST = "This is my small example string which     I'm going to use for pattern matching.";

public static void main(String[] args)  {

    char [] chars = EXAMPLE_TEST.toCharArray(); // trasform your string in a    char array
    Pattern pattern = Pattern.compile("[aeiou]"); // compile your pattern
    Matcher matcher = pattern.matcher(EXAMPLE_TEST); // create a matcher
    while (matcher.find()) {
        int index = matcher.start(); //index where match exist
        chars[index] =  Character.toUpperCase(chars[index]); // change char array where match

    }
        String s = new String(chars); // obtain your new string :-)
    //ThIs Is my smAll ExAmplE strIng whIch I'm gOIng tO UsE fOr pAttErn mAtchIng.
    System.out.println(s);
}
}
0 голосов
/ 30 апреля 2019

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

    String s = "Anthony";
    Pattern pattern = Pattern.compile("[aeiou]");
    Matcher matcher = pattern.matcher(s);
    String modifiedString = "";
    while(matcher.find())
    {
        modifiedString = s.substring(0, matcher.start()) + (char)(s.charAt(matcher.start()) - 32) + s.substring(matcher.end());
    }
    System.out.println(modifiedString);
...