2016-10-09 41 views
1

我有一个字符串,我想用另一个特定的字母来代替,我有一个json响应,包含哪个字母替换为哪个字母。不能用另一个正确替换特定的字母

例如,我的字符串为 'ABH F' 和JSON的,并会 - 一个=> BF,B => 423_,H => 2RE,F => AB

这里的问题,当替换时,它将首先替换为bf,然后它将替换b中的b和b中的转换后的a(bf),这会破坏整个想法,我不能带出一个好主意,已经尝试循环抛出从字符串中的每个字母,但我无法循环抛出JSON没有得到OutOfMemory。

任何想法?这里的代码

for (int i = 0; i < m_jArry.length(); i++) { 
        JSONObject jo_inside = m_jArry.getJSONObject(i); 

        String Original = jo_inside.getString("from"); 
        String To = jo_inside.getString("to"); 

         NewText = NewText.replace(" ","$"); 
         NewText = NewText.replace(Original ,To); 
       } 

回答

1

你可以先用令牌替换每个输入字符串,如{i}其中i是输入的指数,事后与相应指数的输出字符串替换每个标记。

您只需确保令牌不包含在原始字符串中,也不包含在输入/输出中。

然而,这样做更简单但效率非常低。最好的办法是遍历了每字符的字符串,并进行手工更换,也就是这样的:

String input = /* param of your method */; 

Map<Character, String> replacements = new HashMap<>(); 
// Fill map in, like replacements.put('a', "bf"); 
// Parsing the json every time could be time consuming. 
// The best structure here is a HashMap. 
// So I'd suggest that you first create it from the json and then use it whenever. 

String output = ""; 

for (char c : input.toCharArray()) { 
    if (map.containsKey(c)) { 
     output += map.get(c); 
    } else { 
     output += c; 
    } 
} 

return output; // the result is here 
+0

事情是,我想循环的字符串中的字母,并检查是否在ListArray中有字母,如果是,从第二个ListArray中获取字母来改变它,这将是可能的?因为我明白我需要做什么,但代码总是让我失望。 – Jaeger

+0

@AboHani,我用一个例子改进了我的答案。 –

1

我认为这取决于你有多少次想更换动作发生。

如果只有一次,这很容易。您可以拆分原始字符串,并为每个字符进行替换操作并最终合并结果。

但是,如果你允许在JSON每个令牌替换动作发生1倍以上,我觉得没有办法,当你得到这样的JSON来resovle没有OOM问题:

{ a => b,b => a}

0

这是第一次回答这个问题,我希望答案对您有用。我认为我们可以逐个替换字母,但不能更改初始input.Here是我的代码。

String input = "abhf"; 
StringBuffer result = new StringBuffer(); 
for(int i = 0;i < input.length();i++) 
{ 
    char value = input.charAt(i); 
    switch(value) 
    { 
     case 'a': 
      result.append("bf"); 
      break; 
     case 'b': 
      result.append("423"); 
      break; 
     case 'h': 
      result.append("2Re"); 
      break; 
     case 'f': 
      result.append("ab"); 
      break; 
     default: 
      result.append(value); 
      break; 
    } 
} 

System.out.println(result.toString()); 
+0

你错过了一个观点,我不知道我需要改变什么,因为用户选择“要改变什么字母”和“应该改为哪一个字母”,因为他可能根本不会添加“一个”字母,但可以用他自己的语言添加“我”或一封信。这就是我得到Json响应,用户做到的,而不是我。 – Jaeger

相关问题