Я пишу программу для преобразования римских цифр в целые числа. Метод, который я делаю, ищет подстроку, которая означала бы вычитания (IX
, CM
, XC
) и добавление соответствующей суммы к подсчету. Например, если CM
находится в строке MMMMCMXCIX
, тогда установите столбец сотен на 9
.Подстановка выражения регулярного выражения Java
Я пытаюсь сделать это с
if(romanNum.matches("CM")){
hundreds = 9;
romanNum.replaceAll("CM", "");
}
, но он никогда не входит в, если заявление. С помощью thesetwo проверок регулярных выражений со строкой MMMMCMXCIX
и регулярным выражением только как CM
оба они выделяют совпадение, но мой код предполагает иное. Почему это?
'Matcher.matches()' проверяет, соответствует ли ** всем входным данным ** шаблону, другими словами, он соответствует только в том случае, если вход точно соответствует «CM», а не «MMMMCMXCIX». Вместо этого используйте другие методы, такие как ['Matcher.find()'] (http://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#find--). – Jesper
В коде есть несколько проблем. 1) Используйте 'contains', чтобы проверить, содержит ли строка подстроку, 2) присваивает замененные значения переменной, 3) замену литерала подстроками должно выполняться с помощью' String # replace', а не 'replaceAll'. –