Android Bug? : String.substring (5) .replace (“”, “”) // leere Zeichenfolge

Hier ist mein Code:

String str = "just_a_string";
System.out.println("]" + str + "[");
System.out.println("]" + str.replace("", "") + "[");
System.out.println("]" + str.substring(5) + "[");
System.out.println("]" + str.substring(5).replace("", "") + "[");
System.out.println("]" + str.substring(3, 8) + "[");
System.out.println("]" + str.substring(3, 8).replace("", "") + "[");
System.out.println("]" + "sdajndan".substring(5).replace("", "") + "[");

und hier ist die Ausgabe

05-09 19:09:20.570: I/System.out(23801): ]just_a_string[
05-09 19:09:20.570: I/System.out(23801): ]just_a_string[
05-09 19:09:20.570: I/System.out(23801): ]a_string[
05-09 19:09:20.570: I/System.out(23801): ]a_s[      **
05-09 19:09:20.570: I/System.out(23801): ]t_a_s[
05-09 19:09:20.570: I/System.out(23801): ]t_[       **
05-09 19:09:20.570: I/System.out(23801): ][         **

Offensichtlich sind die mit ** markierten Zeilen unerwartet.

Dieses Problem tritt bei meinem Android-Handy A (LG P920 Optimus 3D, Android 2.3.3) auf. Während ich auf meinem Android-Handy B (LG E720 Optimus Chic, Android 2.2) teste, bleibt es stehen. Ich denke, es läuft in eine Endlosschleife.

Ich habe auf beiden Handys mit Java getestet1.5 und1.6. Beide führen jeweils zum gleichen Verhalten.

Ich habe auch auf meiner gleichen Eclipse mit einem getestetJava Projekt, für1.5, 1.6, und1.7. Alle ihre Ausgaben sind wie erwartet korrekt.

Ich frage mich, ob dies ein gerätespezifisches Problem bei der Implementierung sein könnteString.replace(“”, “”) gegen die SaitenBacking-Array.

Könnten Sie mir bitte beim Testen Ihrer Geräte helfen?

Könnte mir bitte jemand den Android-Quellcode desString.replace(CharSequence, CharSequence) Methode? (wie was indocjar)

Danke vielmals!

Ich habe den Code ein wenig geändert, damit er auch auf dem Android-Gerät angezeigt werden kann. (Es ist sowieso nur der gleiche Code).

Auf meinem Telefon A und meinem Telefon B getestet. Das Verhalten ist immer noch dasselbe, wie oben erwähnt.

package com.example.testprojectnew;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    String output_text = "";

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

        String str = "just_a_string";
        process("1]" + str + "[");
        process("2]" + str.replace("", "") + "[");
        process("3]" + str.substring(5) + "[");
        process("4]" + str.substring(5).replace("", "") + "[");
        process("5]" + str.substring(3, 8) + "[");
        process("6]" + str.substring(3, 8).replace("", "") + "[");
        process("7]" + "sdajndan".substring(5).replace("", "") + "[");

        output_text = output_text.concat("\n\nLines (1 & 2), (3 & 4), (5 & 6), should be the same.");

        ((TextView) findViewById(R.id.a_string)).setText(output_text);
    }
    private void process(String str) {
        System.out.println(str);
        output_text = output_text.concat(str).concat("\n");
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage