我正在制作一个将文本翻译成另一种语言的应用程序。用户的输入进入编辑文本框。 这是一个离线应用程序,我不喜欢使用任何数据库。这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_activity);
Button chkCmd = (Button) findViewById(R.id.bChkCmd);
final EditText input = (EditText) findViewById(R.id.editText1);
final EditText display = (EditText) findViewById(R.id.editText2);
chkCmd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = input.getText().toString();
if(str!=null){
str = str.replace("Hello", "Hallo");
str = str.replace("World", "Wereld");
display.setText(str);
}
}
});
}
}
效果很好。唯一的问题是,当有人以这种方式输入“Worldview”或“Worldwide”一词时,它会被翻译为:“Wereldview”或“Wereldwide”。它翻译单词+单词之前(或之后)的字符。
如何编写代码,使其仅翻译单词“World”,并且如果用户拼写错误(例如“yWorld”),则返回“yWorld”而不是 yWereld?
最佳答案
如果您只想匹配单词 World
而不是 Worldwide
,则可以使用 ReplaceAll 方法和单词边界正则表达式 \\b
:
str = str.replaceAll("\\bWorld\\b", "Wereld");
而不是:
str = str.replace("World", "Wereld");
<小时/>
顺便说一句:不应该将 Wereld
替换为 World
吗?那么应该是:
str = str.replaceAll("\\bWereld\\b", "World");
关于java - Eclipse Translator App - 单独翻译单词 - 不包含前面或后面的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873584/