2016-06-08 4 views
0

Das ist die Frage.Ersetzen Sie die gleichen Strings aber mit anderen String-Werten?

(1) __ ist auch ein Stern. (2) __ dreht sich um die Sonne.

edittext1: _______ edittext2: _______

So in der ersten leeren, zeige ich, was der Benutzer Art in Text bearbeiten. Wenn er Sun eingibt, wird die Ausgabe wie folgt aussehen.

(1) _Sun_ist auch ein Stern. (2) __ dreht sich um die Sonne.

edittext1: Sun edittext2: _______

Also für (1) Ich bin zu ersetzen "__" mit meinem Text bearbeiten Wert, wie oben. Wie man es mit (2) macht. Ich habe die gleiche Logik mit (2) versucht, aber es ersetzt auch den ersten Wert.

(1) Planeten ist auch ein Stern. (2) Planeten um die Sonne dreht

edittext1: Sun

edittext2: Planeten

public class MainActivity extends AppCompatActivity { 

    EditText ed1,ed2,ed3; 
    String edtv1,edtv2; 

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

     ed1= (EditText) findViewById(R.id.editText); 
     ed2= (EditText) findViewById(R.id.editText2); 
     ed3= (EditText) findViewById(R.id.editText3); 
     final TextView tv = (TextView) findViewById(R.id.textView); 


     final String sentence = tv.getText().toString(); 


     if (ed1 != null) { 
      ed1.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 

        tv.setText(String.format("%s_", sentence.replace("__", "_" + s.toString()))); 
       } 
      }); 
      edtv1 = ed1.getText().toString(); 

     } 
     if (ed2 != null) { 
      ed2.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 

        tv.setText(String.format("%s_", sentence.replace("__", "_" + s.toString()))); 
       } 
      }); 
      edtv2 = ed2.getText().toString(); 

     } 


    } 
} 

Die oben ist der vollständige Code.

+0

sind Sie sicher, dass Sie die richtigen bearbeiten Textreferenzen verwenden? –

+0

Ja .. @ harvey_slash.Und zweites Mal versuche ich auch "__" zu ersetzen, damit es auch das erste ersetzt. –

+0

by 'first one', ich nehme an, du meinst den ersten Text. korrigiere mich, wenn ich falsch liege –

Antwort

0

Sie die Funktion unten verwenden:

String s = "1 abc 1 def"; 
Log.e("Test", replace(s, "1", "1test", "2test")); --> value: 1test abc 2test def 
// fuction to replace 
private String replace(String source, String toReplace, String... replacements) { 
    StringBuilder stringBuilder = new StringBuilder(source); 
    int startIndex = 0; 
    for (int i = 0; i < replacements.length; i++) { 
     int index = stringBuilder.indexOf(toReplace, startIndex); 
     if (startIndex < 0) { 
      break; 
     } 
     stringBuilder.replace(index, index + toReplace.length(), replacements[i]); 
     startIndex = index + replacements.length; 
    } 
    return stringBuilder.toString(); 
} 
+0

danke @Kinfisher Phuoc –

0

Sie können nicht.

Sie müssen zuerst und zweiten Rohling anders machen, um genau zu ersetzen. Sie können dies tun, indem Sie setzen unterschiedliche Anzahl von Unterstreichungs

String sentence = "(1)___ is also a star.(2)__ revolves around the Sun."; 

sentence.replace("___", "Sun"); 
sentence.replace("__", "Planet"); 

oder die Nummer umfassen kann der Rohling

String sentence = "(1)__ is also a star.(2)__ revolves around the Sun."; 

sentence.replace("(1)__", "(1)" + "Sun"); 
sentence.replace("(2)__", "(2)" + "Planet"); 
+0

Eigentlich muss ich es über Url (JSON Parsing) holen. So kann ich es nicht ändern –

+0

@ShwetabhSingh, können Sie die Zeichenfolge durch die __ teilen. Abhängig von der Text bearbeiten, können Sie die entsprechende Zeichenfolge ändern –

+0

ich werde versuchen Sie dies, aber jede andere Lösung dafür. @ Harvey_Slash –

1
String string = "(1)__ is also a star.(2)__ revolves around the Sun."; 
//First do a string split: 
// then you'll have an array of strings 
String[] parts = string.split("__"); 

im 2. Bearbeiten von Text Zuhörer zu unterscheiden, können Sie das Ende ändern das zweite Element des Teilearrays. In der ersten, können Sie das Ende des ersten Elements ändern, und so weiter.

anzuzeigen, gerade aus dem gesamten String Array drucken

+0

okay, ich versuche dies. –

Verwandte Themen