2013-09-24 52 views
-2

如果我有字符串a = I,II,III,IV,V,VI,VII,VIII如何使用Pattern來檢查字符串是否與I,II,III,IV,V中的任何數字相匹配

如何使用模式來檢查我的輸入字符串是否與這些羅馬數字中的任何一個匹配?

或者有沒有更簡單的方法來做到這一點?

+0

看看http://stackoverflow.com/questions/12967896/converting-integers-to-roman-numerals-java – newuser

+0

是這個問題不是找了' 「AB」 有什麼不同',在'[「a」,「ab」,「aba」]'?請澄清。 – leesei

+1

如果您確實需要僅匹配7個可能的字符串,則不需要正則表達式。只是蠻橫的力量。例如,你可以嘗試像'Arrays.asList(「I」,「II」,「III」,「IV」,「V」,「VI」,「VII」),包含(a)'。 –

回答

3
String pattern="^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$"; 

    String input="VIII"; 
    if(input.matches(pattern)){ 
     System.out.println("true"); 
    }else{ 
     System.out.println("false"); 
    } 

How do you match only valid roman numerals with a regular expression?

+2

這和[在這個答案](http://stackoverflow.com/a/267405/626273)中的正則表達式是一樣的。在那裏你也可以找到解釋。如果您將答案給予答覆者,如果您重新使用他的解決方案,那將會很好。順便說一句。在Java中,您可以省略錨點'^'和'$','matches()'始終與整個輸入匹配。 – stema

+0

非常感謝Prabhakaran! 順便說一句,你怎麼想出模式字符串? –

+0

非常感謝! –

相關問題