用 StringBuilder 附加逗号

Posted

技术标签:

【中文标题】用 StringBuilder 附加逗号【英文标题】:Append a comma with StringBuilder 【发布时间】:2015-04-17 17:37:48 【问题描述】:

我遇到了一个小问题,我的代码可以正常工作并向我发送经度和纬度的输出。我只想用逗号和空格来分隔文本视图中的值。我不想要行分隔符。

我得到什么:32.67543-55.986454

我想要的:32.67543,-55.986454(逗号和空格)

有什么想法吗?

代码:

/**
 * After completing background task Dismiss the progress dialog
 * *
 */
protected void onPostExecute(JSONObject product) 
    if (product != null) 
        // product with this pid found
        // Edit Text
        lblDummyLocation = (TextView) findViewById(R.id.lblDummyLocation);

        StringBuilder jsonStringBuilder = new StringBuilder(); //Create StringBuilder for concatenation of JSON results

        // display profile data in EditText
        try 
            //txtMessage.setText(product.getString(TAG_FIRSTNAME));  //Don't set the text here
            jsonStringBuilder.append(product.getString(TAG_LATITUDE)); //Concatenate each separate item
            jsonStringBuilder.append(System.getProperty("line.separator"));
         catch (JSONException e) 
            e.printStackTrace();
        
        try 
            //txtMessage.setText(product.getString(TAG_LASTNAME));
            jsonStringBuilder.append(product.getString(TAG_LONGITUDE));
            //jsonStringBuilder.append(System.getProperty("line.separator"));
         catch (JSONException e) 
            e.printStackTrace();
        

        lblDummyLocation.setText(jsonStringBuilder.toString());
    

    // dismiss the dialog once got all details
    pDialog.dismiss();

【问题讨论】:

jsonStringBuilder.append(", ") 【参考方案1】:

获得纬度后的那个 line.separator 会在它后面放一个新行,我不认为你想要那个。

要添加逗号,只需再追加一次。

失败时只需要一个 try/catch 块。

StringBuilder jsonStringBuilder = new StringBuilder(); 

// display profile data in EditText
try 

    jsonStringBuilder.append(product.getString(TAG_LATITUDE));
    jsonStringBuilder.append(", ");                                
    jsonStringBuilder.append(product.getString(TAG_LONGITUDE));
    lblDummyLocation.setText(jsonStringBuilder.toString());            
 
catch (JSONException e) 

    e.printStackTrace(); // use a logger for this ideally
    lblDummyLocation.setText("Failed to get co-ordinates");            

【讨论】:

【参考方案2】:

试试类似的东西

jsonStringBuilder.append(product.getString(TAG_LATITUDE) + ", ");

或者,您可以将经度放在前面:

jsonStringBuilder.append(", " + product.getString(TAG_LONGITUDE));

【讨论】:

我不喜欢这种方法,因为它违背了拥有 StringBuilders 的目的。 Java 在后台做了一些事情并将 jsonStringBuilder.append(product.getString(TAG_LATITUDE) + ", "); 转换为 jsonStringBuilder.append(product.getString(new StringBuilder().append(TAG_LATITUDE).append(", ").toString()); 所以,从性能的角度来看,最好像 Sanj 建议的那样进行单独的附加调用

以上是关于用 StringBuilder 附加逗号的主要内容,如果未能解决你的问题,请参考以下文章

String StringBuffer StringBuilder

Java中StringStringBuffer和StringBuilder的区别

(转)String,StringBuffer与StringBuilder的区别

StringBuilder 没有附加位置地址

使用 StringBuilder 和 BufferedReader,如何在文本文件中的每个单词后添加逗号并生成字符串?

StringBuilder类和StringBuffer类 日期相关的类 集合框架 List集合