替换两个字符串中的字母

时间:2016-10-10 16:22:25

标签: java

我有两个字符串和一个Json响应:

  1. InputString =" ab";
  2. OutputString ="";
  3. Json(例如,不是真实的):数组(从:a,到:bhduh - 从:b,到:eiaja)。
  4. * Json不是一个真正的回应,它有2个记录这个例子。

    我想要做的是将a替换为bhduh,将b替换为eiaja,我有一个JSON循环告诉我应该替换的内容,以及我需要在那个循环内完成,所以这就是我尝试过的:

    InputString = InputString.replace(From,To); 
    

    输出

    eiajahduheiaja
    

    预期产出

    bhduheiaja
    

    这种情况正在发生,因为在第一个循环中,它正在改变a,而在第二个循环中,有两个b,{{1} } b中的bhduh和普通字符串中的b

    循环时间取决于字母数,因此有时它可以是5或6,具体取决于服务器Json响应。

    我想要的是预期输出,任何想法?

2 个答案:

答案 0 :(得分:1)

目前还不清楚你有什么JSON,但我猜你的问题是你用a取代bhduh,(包含b),然后你试着用其他东西替换b。显然这是不正确的。

您需要遍历初始输入,然后将替换附加到其他字符串,而不是替换您的输入。

例如,使用HashMap

public static void main (String[] args) throws java.lang.Exception
{
    String input = "ab";
    HashMap<Character, String> replacements = new HashMap<Character, String>() {{
        put('a', "bhduh");
        put('b', "eiaja");
    }};

    StringBuilder sb = new StringBuilder();
    for (char c : input.toCharArray()) {
        String rep = replacements.get(c);
        if (rep != null) {
            sb.append(rep);
        }
    }
    System.out.println(sb.toString());
}

Example

答案 1 :(得分:0)

如果你用一些特殊字符替换所有原始的a,而所有的原始b都用另一个特殊字符替换,如* 然后,您应该能够用所需的短语替换特殊字符。

类似的东西:

String str = "ab";
str =str.replace("a", "-");
str =str.replace("b", "*");
str =str.replace("-", "bhduh");
str =str.replace("*","eiaja");

System.out.println(str);
很可能不是最好的解决方案,但现在可能是一个有效的解决方案。