问题描述
我被卡在if语句部分,如何进行比较?
此示例的预期输出为:字符串为1,使用两次测试映射号三。
String s = "The string 1s is use 2 test the map number3.";
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"one");
map.put(2,"two");
map.put(3,"three");
for (int i = 0; i < s.length(); i++){
if (s.charat(i) is equals to map.contains(1){
s[i] = map.get(1);
}
}
解决方法
您需要将字符转换为数字值,以检查其是否为key
中的HashMap
。更好的方法是使用StringBuilder
,因为如果要在地图中找到String
,则要追加String s = "The string 1s is use 2 test the map number3.";
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"one");
map.put(2,"two");
map.put(3,"three");
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()){
if (Character.isDigit(c) && map.containsKey(Character.getNumericValue(c))){
sb.append(map.get(Character.getNumericValue(c)));
}else {
sb.append(c);
}
}
System.out.println(sb.toString());
:
key
另一种解决方案是将字符存储为String s = "The string 1s is use 2 test the map number3.";
HashMap<Character,String> map = new HashMap<>();
map.put('1',"one");
map.put('2',"two");
map.put('3',"three");
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()){
if (map.containsKey(c)){
sb.append(map.get(c));
}else {
sb.append(c);
}
}
System.out.println(sb.toString());
:
The string ones is use two test the map numberthree.
输出:
val countPlants = MutableLiveData<Int>(0)
override fun loadSingle(..... {
countPlants.postValue(it.meta?.total ?: 0)
}
,
您可以迭代地图,并用String中的值替换地图键。
for (Map.Entry<Integer,String> e: map.entrySet()) {
s = s.replace(e.getKey().toString(),e.getValue());
}
我建议您不要按字符串中的字符进行迭代,因为如果要替换两个或多个数字(例如22),则会遇到问题。
演示:
String s = "The string 1s is use 2 test the map number3.";
HashMap<Integer,"three");
for (Map.Entry<Integer,e.getValue());
}
System.out.println(s);
输出:
The string ones is use two test the map numberthree.