2016-12-30 93 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