正确替换所有孤立的字符串

时间:2017-02-05 16:01:21

标签: java android android-studio

我正在编写一个翻译应用程序并遇到了一个小问题。例如: 当我在typeHond时,我希望outputDog,当type中的Honderd时,我希望output 1}}为Hundred。但是当我输入Hond时,我得到Dogerd。所以它只需要翻译Hond并添加剩下的字母。我在我的代码中将Honderd置于Hond之上,想出了一个解决方案。但是这个问题必须有另一个解决方案吗?这是代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mType = (EditText) findViewById(R.id.typeWordTxt);
    mSearch = (Button) findViewById(R.id.find8tn);
    mResults = (TextView) findViewById(R.id.resultsTxt);

    mSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String resultaat = mType.getText().toString().toLowerCase();
            resultaat = resultaat
                    //Getallen
                    .replaceAll("honderd", "hundred")
                    .replaceAll("hond", "dog")
            mResults.setText(resultaat);

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用\\b字边界将您的单词隔离为单个单词,而不是将其与其他单词匹配

\\bhonderd\\b\\bhond\\b

    String s ="Honderd Honderd Hond".toLowerCase();
    System.out.println(s
            .replaceAll("\\bhond\\b", "dog")
            .replaceAll("\\bhonderd\\b", "hundred"));

输出:

hundred hundred dog

演示



const honderd_rep = /\bhonderd\b/g;
const hond_rep  = /\bhond\b/g;
const str = 'honderd honderd hond';
const result = str.replace(hond_rep,'dog').replace(honderd_rep, 'hundred');
console.log(result);