0

私はこのコードを持っています:

        tvData1 = (TextView)findViewById(R.id.tvData1);
    tvData2 = (TextView)findViewById(R.id.tvData2);
    tvData3 = (TextView)findViewById(R.id.tvData3);
    GetData data= new GetData();
    try {
        SharedPreferences getName = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        String name = getName.getString("name", "");
        String returned = data.getData(name); //Gets data from internet
        String[] dataSplit = returned.split(",");
        for(int i = 0; i < dataSplit.length; i++){
            String stringData1 = dataSplit[0];
            String stringData2 = dataSplit[1];
            String stringData3 = dataSplit[2];

            tvData1.setText(stringData1);
            tvData2.setText(stringData2);
            tvData3.setText(stringData3);
        }

さて、インターネットから取得した文字列は次のようになります。

"1,2,3 4,5,6"

そして、そのスペースが3から4の間である場合、実際には次のような新しい行に表示されます。

1,2,3
4,5,6

しかし基本的に私が望む結果は

stringData1 = 1
stringData2 = 2
stringData3 = 3
stringData4 = 4
etc...

それ以外の:

stringData1 = 1
stringData2 = 2
stringData3 = 3 4

それが今やっていることです。

また、私が抱えていると思われるもう1つの無関係な問題は、tvData2.setText( "Some Text");を実行しても、tvData2が何があってもsetTextを実行しないことです。

4

2 に答える 2

1

Stringsplit()メソッドは正規表現を取ります。したがって、コンマと改行文字の両方で分割される文字クラスを式に含めることができます。おそらく、次のように機能します。(編集:テストしただけで、うまくいきます。

String[] dataSplit = returned.split("[,\n]");

別のオプションは、空白のショートカットを使用して、すべての空白文字を分割することです\s\(文字をエスケープする必要があることに注意してください:

String[] dataSplit = returned.split("[,\\s]");

テスト済みで、これも文字列で機能します"1,2,3\n4,5,6"

于 2012-12-01T23:12:31.500 に答える
1

動作するはず...

   returned.split("[,\\s]+");
于 2012-12-01T23:13:42.310 に答える