我绝不是一名专业的Java开发人员,我为解决各种问题/改进现有解决方案而编写代码,主要是为了我自己。我是自学成才,所以我可能缺乏一些基本的Java /编程技能。
我想知道是否有更好的方法来改进以下代码段。
我正在解析一个网站,需要将传入的数据转换为本地化语言。为此,我使用一个简单的开关/案例场景来解析String。
用其他东西可以改善吗? Map
/ HashMap
?
实施例代码:
String mCity = "Soelden";
switch (mCity) {
case "Crans Montana" : mCity = "Crans-Montana"; break;
case "Soelden" : mCity = "Sölden"; break;
case "Val d Isere" : mCity = "Val d'Isere"; break;
case "St. Moritz" : mCity = "Sankt Moritz"; break;
}
答案 0 :(得分:3)
这是一个例子:
import java.util.HashMap;
import java.util.Map;
public final class Translator {
private Map<String, String> translation;
public Translator() {
translation = new HashMap<>();
translation.put("Crans Montana", "Crans-Montana");
translation.put("Soelden", "Sölden");
translation.put("Val d Isere", "Val d'Isere");
translation.put("St. Moritz", "Sankt Moritz");
}
public String translate(String input) {
String result = this.translation.get(input);
return (result != null) ? result : "";
}
public static void main(String[] args) {
Translator t = new Translator();
System.out.println(t.translate("Soelden")); // prints Sölden
}
}
答案 1 :(得分:2)
Map<String, String> cities = new HashMap<>();
cities.put("Crans Montana", "Crans-Montana");
cities.put("Soelden", "Sölden");
// more cities.put(...)
String mCity = "Soelden";
String mCityLocalized = cities.get(mCity); // will be "Sölden"
如果要翻译到不同的城市,可以使用嵌套结构。
答案 2 :(得分:2)
我的版本:
import java.util.HashMap;
import java.util.Map;
public class MExample {
private static Map<String,String> map = new HashMap<String, String>();
static {
map.put("Crans Montana", "Crans-Montana");
map.put("Soelden", "Sölden");
map.put("Val d Isere", "Val d'Isere");
map.put("St. Moritz", "Sankt Moritz");
}
public static String normalize(String s){
String result = map.get(s);
return (result != null) ? result : s;
}
//in-place test
public static void main(String[] args) {
System.out.println("v1 = " + normalize("St. Moritz"));
System.out.println("v2 = " + normalize("12"));
}
}