字符串标记后缀替换

时间:2014-05-13 12:42:31

标签: java regex string replace

已在下面发布了我为字母标记后缀替换而编写的方法。

public static String suffix_replacement(String string) {
    String[] tokens = string.split("\\s");
    String new_string = "";
    String suffix = "";
    String replacement = "";

    for (String token : tokens) {            
        suffix = GetElements.suffix_replacement_map.containsKey(getSuffix(token, 7)) ? getSuffix(token, 7) : 
                GetElements.suffix_replacement_map.containsKey(getSuffix(token, 6)) ? getSuffix(token, 6) : 
                GetElements.suffix_replacement_map.containsKey(getSuffix(token, 5)) ? getSuffix(token, 5) : 
                GetElements.suffix_replacement_map.containsKey(getSuffix(token, 4)) ? getSuffix(token, 4) : 
                GetElements.suffix_replacement_map.containsKey(getSuffix(token, 3)) ? getSuffix(token, 3) : "";  

        replacement = suffix.equals("") ? "" : GetElements.suffix_replacement_map.get(suffix);

        if (!suffix.equals("")) 
            token = token.substring(0, token.length()-suffix.length())+replacement;

        new_string += token+" ";
    }

    new_string = new_string.trim();

    if (!new_string.equals(string)) {
        System.out.println(string);
        System.out.println(new_string);
    }        
    return new_string;
}

Test case 1

string: hemisphere hemorrhage

new_string: hemisphere hemorrh

It works fine.

Test case 2:

string: cardiac arrhythmia

new_string: arrhythmia

It does not give desired string.

如果Strings中除最后一个标记之外的任何标记获得后缀替换,则该函数似乎返回错误的String

感谢在函数中找到错误的任何帮助。

谢谢。


添加信息:

suffix_replacement_map填充了以下内容:

tic:sis
sis:tic
oneal:ineum
age:
cular:cal
cardiac:cardia
nic:nia
ages:ed
evi:evus
cular:cal
cardiac:cardia
nic:nia
ages:ed
evi:evus
tachy:tachicardia
cral:crum
cancer:carcinoma
sillar:sil

使用的功能:

public static String getSuffix(String str, int len) {
    if (str.length() < len) {
        return "";
    }
    return str.substring(str.length() - len);
}   

1 个答案:

答案 0 :(得分:2)

我按照自己的想法实现了getSuffix:

   private static String getSuffix(String token, int i) {
        if (i <= token.length()) {
            return token.substring(token.length() - i, token.length());
        }
        return null;
    }

它工作了...... :)你可以将你的版本添加到条目中吗?我认为使用getToken的东西可能是错误的。