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

这就是它现在正在做的事情。

我似乎遇到的另一个不相关的问题是 tvData2 无论如何都不会 setText,即使我做了 tvData2.setText("Some Text");

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 回答