用 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的区别