java - Eclipse Translator App-单独翻译单词-不在单词后面或前面

我正在制作一个将文本翻译成另一种语言的应用程序。用户输入进入EditText框。
这是一个离线应用程序,我更喜欢不使用任何数据库。这是我的代码:

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?

最佳答案

如果只想匹配单词\\b而不是World,则可以使用replaceAll方法和单词边界正则表达式Worldwide

str = str.replaceAll("\\bWorld\\b", "Wereld");


代替:

str = str.replace("World", "Wereld");




顺便说一句: Wereld不应由 World代替吗?那么应该是:

str = str.replaceAll("\\bWereld\\b", "World");