ローマ数字を整数に変換するプログラムを書いています。私がやっている方法は、減算(IX
、CM
、XC
)を意味し、それぞれの量を集計に加えるサブストリングを探しています。たとえば、CM
が文字列MMMMCMXCIX
にある場合は、数百の列を9
に設定します。Java正規表現の部分文字列を見つける
私は
if(romanNum.matches("CM")){
hundreds = 9;
romanNum.replaceAll("CM", "");
}
でそれをやろうとしているが、それはIF文に入ることはありません。 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)リテラル部分文字列を置換するには' replaceAll'ではなく 'String#replace'を使用します。 –