Ошибка Android? : String.substring (5) .replace («», «») // пустая строка

Вот мой код:

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("", "") + "[");

и вот вывод

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): ][         **

Очевидно, строки, отмеченные **, являются неожиданными.

Эта проблема происходит с моим телефоном Android A (LG P920 Optimus 3D, Android 2.3.3). Пока я тестирую на своем телефоне Android B (LG E720 Optimus Chic, Android 2.2), он останавливается. Я предполагаю, что это идет в бесконечный цикл.

я тестировал на обоих телефонах, с Java1.5 а также1.6, Оба приводят к одинаковому поведению соответственно.

я также проверил на том же Eclipse сЯва проект, для1.5, 1.6, а также1.7, Все их результаты правильные, как и ожидалось.

Интересно, это может быть проблема реализации конкретного устройстваString.replace(“”, “”) против струнрезервный массив.

Не могли бы вы помочь мне проверить на ваших устройствах?

Может ли кто-нибудь предоставить мне исходный код AndroidString.replace(CharSequence, CharSequence) метод? (как что вdocjar)

Большое спасибо!

Я немного изменил код, чтобы он также отображался на устройстве Android. (Это все тот же код в любом случае).

Протестировано как на моем телефоне A, так и на телефоне B. Поведение остается таким же, как упомянуто выше.

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

Ответы на вопрос(1)

Ваш ответ на вопрос