已在下面发布了我为字母标记后缀替换而编写的方法。
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);
}
答案 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的东西可能是错误的。