如何在 Unity (C#) 中将字符串列表转换为单个字符串

Dan*_*ang 1 c# unity-game-engine

我是 C# 的新手,并且为 noob 问题道歉 - 我正在尝试将字符串列表转换为单个字符串,以便我可以将它与 WWWForm 的 POST 函数一起使用。

如果我有一个字符串列表(例如kidIds = ["a#123", "b#123"]),我如何轻松地将其转换为单个字符串("a#123, b#123")?在 Javascript 中,我会简单地做kidIds.join(","),但我不确定如何在 C# 中做到这一点。

我试着做kidIds.ToArray().ToString(),但它并没有真正给我我想要的。我可以使用 for 循环遍历整个列表,但我想知道是否有一个更简单的衬里我可以使用?

sho*_*ole 6

基本上与 JavaScript 的相同 join()

String.Join 方法


Moh*_*ava 6

由于您是 C# 新手,我想告诉您,您试图将字符串列表转换为单个字符串。不,它不是字符串列表,而是字符串数组。字符串列表将初始化为

List<string> SomeName = new List<string>();
Run Code Online (Sandbox Code Playgroud)

当你的一个被声明为数组时。现在您可以像 Javascript 一样将字符串数组加入一个字符串中

string SomeString = String.Join(",", kidIds);
Run Code Online (Sandbox Code Playgroud)

string.Join方法将许多字符串合二为一。它接收两个参数:一个数组(或 IEnumerable)和一个分隔符字符串。

您还可以从 String 数组中创建一个字符串,使用+它来连接字符串,例如

string smstr = String.Empty;
for(int i=0; i<kidIds.Length; i++)
{
    smstr = smstr + kidIds[i];
    //or
    smstr += kidIds[i]
}
Run Code Online (Sandbox Code Playgroud)

您还可以选择 StringBuilder 从字符串数组中创建一个字符串,因为 StringBuilder.Append() 方法比使用 + 运算符好得多

StringBuilder sb = new StringBuilder();
for(int i=0;i<kidIds.Length;i++)
{
    sb.Append(kidIds[i]);
}
Run Code Online (Sandbox Code Playgroud)

但是当连接数小于 1000 时 StringBuilder 很好,String.Join() 甚至比 StringBuilder 更有效。