我轻松浏览了(function (H) {
H.wrap(H.ColorAxis.prototype, 'toColor', function (proceed, value, point) {
if(value == 0)
return '#FF00FF'; // My color
else
return proceed.apply(this, Array.prototype.slice.call(arguments, 1)); // Normal coloring
});
}(Highcharts));
类的文档,并没有看到任何用于将任意数量的字符串组合成单个字符串的好工具。我可以在我的程序中提出的最佳程序是
string
string [] assetUrlPieces = { Server.MapPath("~/assets/"),
"organizationName/",
"categoryName/",
(Guid.NewGuid().ToString() + "/"),
(Path.GetFileNameWithoutExtension(file.FileName) + "/")
};
string assetUrl = combinedString(assetUrlPieces);
但这似乎太多代码和太多的低效率(来自字符串添加)和尴尬。
答案 0 :(得分:17)
如果您想在值之间插入分隔符,string.Join
是您的朋友。如果您只是想要连接字符串,那么您可以使用string.Concat
:
string assetUrl = string.Concat(assetUrlPieces);
与使用空分隔符调用string.Join
相比,这更简单(并且可能更有效,但可能微不足道)。
如评论中所述,如果你实际在代码中的同一点建立数组,那么你就不需要其他任何数组,只需直接使用连接:
string assetUrl = Server.MapPath("~/assets/") +
"organizationName/" +
"categoryName/" +
Guid.NewGuid() + "/" +
Path.GetFileNameWithoutExtension(file.FileName) + "/";
......或者可能使用string.Format
代替。
答案 1 :(得分:15)
答案 2 :(得分:4)
我想要StringBuilder
。
var sb = new StringBuilder(pieces.Count());
foreach(var s in pieces) {
sb.Append(s);
}
return sb.ToString();
<强>更新强>
@FiredFromAmazon.com:我认为您希望采用其他人提供的string.Concat
解决方案
FillStringChecked
,它使用指针副本,而string.Join
使用StringBuilder
。见http://referencesource.microsoft.com/#mscorlib/system/string.cs,1512。 (感谢@Bas)。答案 3 :(得分:3)
string.Concat
是您想要的最合适的方法。
var result = string.Concat(pieces);
除非您想在各个字符串之间添加分隔符。然后您使用string.Join
var result = string.Join(",", pieces); // comma delimited result.
答案 4 :(得分:0)
使用常规for循环执行此操作的简单方法: (因为你可以使用索引,加上我喜欢这些循环比foreach循环更好)
private string combinedString(string[] pieces)
{
string alltogether = "";
for (int index = 0; index <= pieces.Length - 1; index++) {
if (index != pieces.Length - 1) {
alltogether += string.Format("{0}/" pieces[index]);
}
}
return alltogether;