【问题标题】:Converting a String to different characters using String arrays使用字符串数组将字符串转换为不同的字符
【发布时间】:2013-05-27 11:33:37
【问题描述】:
private void convertToNumeric() {

    for (int i = 0; i < this.CONVERT_TO_NUMERIC.length; i++) {
        for (int j = 0; j < this.INPUT_FROM_USER.length(); j++) {



        }
    }



}



private String INPUT_FROM_USER = "";
private final String[][] CONVERT_VALUES = { {"1", "w"}, { "2", "e"}, {"3", "r"}, 
                                            {"4", "s"}, {"5", "d"}, {"6", "f"}, {"7", "z"},
                                            { "8", "x"}, {"9", "c"} };

private final String[][] CONVERT_TO_NUMERIC = { {"abc", "2"}, {"def", "3"}, {"ghi", "4"},
                                                {"jkl", "5"}, {"mno", "6"}, {"pqrs", "7"},
                                                {"tuv", "8"}, {"wxyz", "9"} };

有人可以指导我如何将输入转换为字符串数组中指定的字符吗?

这是一个例子。

  • 用户输入“Hello world”
  • 搜索字符串数组并将字符串中的每个字符转换为给定的数字
  • 输出“43556 96753”

如果数组的第一个值包含字符,它将被替换为数字。

我不是要求被喂,我只是需要一些关于如何开始的指导。提前致谢。

【问题讨论】:

  • 那个字符是数字1到1的映射吗,我问这个是因为我看到两个数组CONVERT_TO_NUMERIC CONVERT_VALUES
  • “Hello World”如何变成“43556 96753”。是 'h'='4', 'e'='3' 吗?
  • CONVERT_TO_NUMERIC中的每个字符都替换为对应的数字,如果第一个String包含字母,则替换为数字。

标签: java string replace


【解决方案1】:

这似乎是一份工作,更适合HashMapHere 是文档。

例如,您可以使用:

HashMap<String, String> map = new HashMap<String, String>();

map.put("H", "10");
map.put("I", "11");

那么当输入字符串到达​​时:

String value = "Hello";
String response = "";

for(char c : value)
{
    response += map.get(String.valueOf(c));
}

【讨论】:

  • 有没有办法将 contains 方法与 HashMap 或类似的东西一起使用?因为我使用 values.put("abc", "2");当我尝试获取值时它返回 null,因为它不存在
  • This question 似乎为您指明了正确的方向。
【解决方案2】:

把它转过来,从表格开始(= 做什么):

String value = "Hello world";

for (String[] mapping : CONVERT_TO_NUMERIC) {
    value = value.replaceAll("(?i)[" + mapping[0] + "]", mapping[1]);
    // Case insensitive "[abc]" -> "2" etcera.
}

// value now is "43556 96753"

现在另一张桌子也一样。

【讨论】:

  • 是的,谢谢,除了我不是要替换整个字符串,而是每个单独的字符。我不确定这是否会按我想要的方式工作
猜你喜欢
  • 2011-06-18
  • 2016-03-23
  • 2017-11-27
  • 1970-01-01
  • 2022-01-23
  • 2016-03-10
相关资源
最近更新 更多