java - Eclipse Translator App - 单独翻译单词 - 不包含前面或后面的字符

标签 java android regex string replace

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

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/

相关文章:

java - JPA 返回对象引发内部服务器错误

android - 为所有屏幕尺寸设置背景图像

android - 当屏幕上显示大量文本时,Android 上的倒置 Flatlist 性能糟糕

Python、Django 1.7 : Redirect all URLs to a single controller

java - 使用 Java 创建功率表

java - 在 JsonObject 中循环值

android - 检查android ScrollView 是否可以滚动

python - 使用 Python 在不同实例中分割 verilog 路径的正则表达式模式

Javascript正则表达式过滤十六进制数

java - 在 XML 中,您如何称呼这个 ://@Dohicky. 0 以及如何在 Java 中寻址它