【发布时间】:2017-02-19 04:08:39
【问题描述】:
我之前已经发布了关于信件的内容,但这是另一个主题,我有一个包含 2 个对象的 json 响应,from 和 to,from 是要更改的内容,to 是什么它将被更改为。
我的代码是:
// for example, the EnteredText is "ab b test a b" .
EnteredString = EnteredText.getText().toString();
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");
if(isMethodConvertingIn){
EnteredString = EnteredString.replace(" ","_");
EnteredString = EnteredString.replace(Original,To + " ");
} else {
EnteredString = EnteredString.replace("_"," ");
EnteredString = EnteredString.replace(To + " ", Original);
}
}
LoadingProgress.setVisibility(View.GONE);
SetResultText(EnteredString);
ShowResultCardView();
例如json响应是:
{
"Response":[
{"from":"a","to":"bhduh"},{"from":"b","to":"eieja"},{"from":"tes","to":"neesj"}
]
}
String.replace() 方法在这里不起作用,因为它首先会将a 替换为bhduh,然后将b 替换为eieja,但问题出在这里,它会将b 转换为bhduh到eieja,我不想这样做。
我想根据 Json 完美地转换字符串中的字母和“单词”,但这就是我失败的地方。
新代码:
if(m_jArry.length() > 0){
HashMap<String, String> m_li;
EnteredString = EnteredText.getText().toString();
Log.i("TestAf_","Before Converting: " + EnteredString);
HashMap<String,String> replacements = new HashMap<String,String>();
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");
if(isMethodConvertingIn){
//EnteredString = EnteredString.replace(" ","_");
replacements.put(Original,To);
Log.i("TestAf_","From: " + Original + " - To: " + To + " - Loop: " + i);
//EnteredString = EnteredString.replace(" ","_");
//EnteredString = EnteredString.replace(Original,To + " ");
} else {
EnteredString = EnteredString.replace("_"," ");
EnteredString = EnteredString.replace("'" + To + "'", Original);
}
}
Log.i("TestAf_","After Converting: " + replaceTokens(EnteredString,replacements));
// Replace Logic Here
// When Finish, Do :
LoadingProgress.setVisibility(View.GONE);
SetResultText(replaceTokens(EnteredString,replacements));
ShowResultCardView();
输出:
10-10 19:51:19.757 12113-12113/? I/TestAf_: Before Converting: ab a ba
10-10 19:51:19.757 12113-12113/? I/TestAf_: From: a - To: bhduh - Loop: 0
10-10 19:51:19.757 12113-12113/? I/TestAf_: From: b - To: eieja - Loop: 1
10-10 19:51:19.757 12113-12113/? I/TestAf_: From: o - To: neesj - Loop: 2
10-10 19:51:19.758 12113-12113/? I/TestAf_: After Converting: ab a ba
【问题讨论】:
-
转化是否遵循特定模式?还是都是任意的?
-
例如,一种解决方案是使用某种标记来替换
{replacement},并考虑{和}逐步替换,最后去掉分隔符{} -
我认为@RC。是说,是这样的stackoverflow.com/questions/959731/…
-
我在我的个人资料中发布了一个关于正则表达式的问题,我正在考虑在更改后的字母之前和之后添加
'',并且在转换字符串时,我会检查它是否在里面'与否,如果是则不要转换它,如果否则转换它,但是这个想法不起作用,因为它制作起来非常复杂,它适用于低计数字母,但是在写整个单词时,它失败了。 -
@cricket_007 谢谢我在找一个例子;)这个想法是插入分隔符以避免替换替换
标签: java