2016-12-30 10 views
3

Ich entwickle eine App in Android Studio, die bestimmte Wörter übersetzt, die ich selbst erfunden habe. Ich habe den Teil im Code, der die Wörter richtig übersetzt, aber es funktioniert nur, wenn ich das Wort eintippe, aber nicht, wenn ich das Wort in einen Satz eintippe. Wenn ich den Satz eintippe, zeigt er nichts an, wenn ich den Knopf drücke. Zum Beispiel: Wenn ich "Cookie" eintippe, bekomme ich "Keks". Aber wenn ich "Ich liebe mich ein Cookie" eintippe, zeigt es nicht den Satz und das Wort an, wenn ich den Knopf drücke.Bestimmte Wörter in einem Satz ersetzen

Dies ist mein Code so weit:

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"); 
       } 
      } 
     }); 
    } 
} 

Antwort

5

Sie es wie folgt tun:

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

Wie @Andreas sagte zu dem Kommentar unten können Sie es verwenden zu ersetzen, wenn ein Ganzes Wort und nicht eine Zeichenfolge in einem Wort zu ersetzen.

+2

Vielleicht fügen Sie '\\ b verwenden müssen ', wie in' "(? i) \\ bcookie \\ b" '? – Andreas

+1

Ja eine Wortgrenze, die nur definiert wird, wenn es sich um ein einzelnes Wort handelt. – ddarellis

+0

Es zeigt, dass .toLowerCase und .ReplaceAll nicht aufgelöst werden können. Ich habe Anfänger Java-Fähigkeiten, also lerne ich noch. Ich sehe vielleicht keine offensichtlichen Probleme. Danke für deine schnelle Antwort! – CFOJOLT

2

Es ist eine einfache Aufgabe, die Sie unten das tun können

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

Es wird das Wort zu mit xyz in der gesamten Zeichenfolge ersetzen. Probieren Sie es ein d lassen Sie mich wissen, dass ist das, was Sie wollen

+0

Ich habe es versucht und ich bekomme das gleiche Ergebnis, das ich mit meinem eigenen Code bekomme. Es kann sein, dass ich Ihren Code nicht richtig implementiert habe. Ich habe Anfängerfähigkeiten Java und ich lerne noch, also sehe ich nicht offensichtliche Probleme. Danke für die schnelle Antwort! – CFOJOLT

1

Weil Sie equals verwenden, für Wort von Satz zu finden, Sie Methode und replaceAll() für ersetzen alle diese Worte

+0

public void onClick (Ansicht v) { if (mType.getText(). ToString(). Trim(). ReplaceAll ("Cookie", "Keks"). Enthält ("cookie")) { mResults.setText ("Keks"); } } – CFOJOLT

Verwandte Themen