如何解决用HashMap替换字符串中的字符
我被卡在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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。