2016-12-30 92 views
3

我正在Android Studio中开发一个应用程序,用于翻译我自己编写的某些单词。在代码中我已经有了将单词翻译为正确的部分,但只有在输入单词时才起作用,但当我在句子中输入单词时不起作用。当我输入句子时,按下按钮时不会显示任何内容。例如:当我输入“饼干”时,我得到“饼干”。但是当我输入“我爱我一个Cookie”时,当我按下按钮时,它不显示该句子和单词。替换句子中的某些单词

这是我到目前为止的代码:

public class MainActivity extends AppCompatActivity { 
    EditText mType; 
    Button mSearch; 
    TextView mResults; 
    @Override 
    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) { 
       if (mType.getText().toString().trim().equals("cookie")) 
       { 
        mResults.setText("biscuit"); 
       } 
      } 
     }); 
    } 
} 

回答

5

你可以这样说:

if (mType.getText().toString().toLowerCase().contains("cookie")) { 
    mResults.setText(mType.getText().toString().replaceAll("(?i)cookie", "biscuit")); 
} 

至于@Andreas的评论说,下面你可以用它来代替,如果是一个整体单词而不是替换单词中的字符串。

+2

也许加上'\\ b ',如''(?i)\\ bcookie \\ b“​​'? – Andreas

+1

是的单词边界只能定义单个单词。 – ddarellis

+0

它显示无法解析.toLowerCase和.replaceAll。我有初学Java技能,所以我仍然在学习。我可能看不到明显的问题。感谢您的快速回复! – CFOJOLT

2

这是一个简单的任务,你可以做以下

String str = "abc"; 
str.replace("abc", "xyz"); 

它将整个字符串与XYZ替换词。 试试看的d让我知道这是你想要的东西

+0

我已经尝试过了,并且得到了与我自己的代码相同的结果。这可能是因为我没有正确实施你的代码。我有初学Java技能,我仍然在学习,所以我可能看不到明显的问题。感谢您的快速回复! – CFOJOLT

1

因为你用等号,从句子现象单词,你必须使用方法和replaceAll()用于替换所有的这句话

+0

public void onClick(View v){ if(mType.getText()。toString()。trim()。replaceAll(“cookie”,“biscuit”)。contains(“cookie”)) { mResults.setText ( “饼干”); } } – CFOJOLT