字符串替换为罗马数字
String replace for Roman numerals
我收到如下用户输入。
"ix 和 viii 都是罗马数字。
mcmlxxxvii 是哇年。
年份是 mmxvi。"
我必须搜索 i/p 中出现的所有罗马数字并将其转换为大写。所以我想像下面那样使用字符串替换,其中 xxx 是罗马数字。
input.replaceAll("(?i)xxx","XXX");
目前,我可以检查输入是否有。
System.out.println(input.matches("^.*M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}).*$"));
帮帮我。
试试这个:
(?!\bi+\b)\b[dcmlxvi]+\b|(\bi+\.)
并替换为:
\U will not work in java though,but the following code will
java 代码示例:
final String regex = "(?!\bi+\b)\b[dcmlxvi]+\b|(\bi+\.)";
String string = "i i Both ix is viii are roman numeral. mcmlxxxvii is wow year. Year is mmxvi. i i I i i i i am good";
String tmp;
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
tmp=matcher.group(0).toUpperCase();
string=string.replace(matcher.group(0),tmp);
}
System.out.println(string);
我收到如下用户输入。
"ix 和 viii 都是罗马数字。 mcmlxxxvii 是哇年。 年份是 mmxvi。"
我必须搜索 i/p 中出现的所有罗马数字并将其转换为大写。所以我想像下面那样使用字符串替换,其中 xxx 是罗马数字。
input.replaceAll("(?i)xxx","XXX");
目前,我可以检查输入是否有。
System.out.println(input.matches("^.*M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}).*$"));
帮帮我。
试试这个:
(?!\bi+\b)\b[dcmlxvi]+\b|(\bi+\.)
并替换为:
\U will not work in java though,but the following code will
java 代码示例:
final String regex = "(?!\bi+\b)\b[dcmlxvi]+\b|(\bi+\.)";
String string = "i i Both ix is viii are roman numeral. mcmlxxxvii is wow year. Year is mmxvi. i i I i i i i am good";
String tmp;
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
tmp=matcher.group(0).toUpperCase();
string=string.replace(matcher.group(0),tmp);
}
System.out.println(string);