/**
*
*/
package com.maalaang.omtwitter.text;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Sangwon Park
*
*/
public class WordPattern {
private static String patternPrefix = "WP_";
private static Pattern pNumberRome = Pattern.compile("(ix|iv|vi{0,3}|i{2,3})");
private static Pattern pNumberArabic = Pattern.compile("[0-9]+(\\.[0-9]+)*");
public static String normalize(String value) {
value = value.toLowerCase();
value = value.replaceAll("[#@]", "");
return value;
}
public static String[] normalize(String[] values) {
for (int i = 0; i < values.length; i++) {
values[i] = normalize(values[i]);
}
return values;
}
public static boolean isPatternName(String word) {
return word.startsWith(patternPrefix);
}
public static String replaceRomanToArabic(String word) {
Matcher m = pNumberRome.matcher(word);
String res = word;
while (m.find()) {
String rome = m.group();
int num = decodeRoman(rome);
res = res.replaceFirst(rome, String.valueOf(num));
}
return res;
}
private static int decodeRoman(char letter) {
switch (letter) {
case 'm':
return 1000;
case 'd':
return 500;
case 'c':
return 100;
case 'l':
return 50;
case 'x':
return 10;
case 'v':
return 5;
case 'i':
return 1;
default:
return 0;
}
}
private static int decodeRoman(String roman) {
int result = 0;
roman = roman.toLowerCase();
for (int i = 0; i < roman.length() - 1; i++) {
if (decodeRoman(roman.charAt(i)) < decodeRoman(roman.charAt(i + 1))) {
result -= decodeRoman(roman.charAt(i));
} else {
result += decodeRoman(roman.charAt(i));
}
}
result += decodeRoman(roman.charAt(roman.length() - 1));
return result;
}
}