Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将字符串列表转换为由分隔符分隔的字符串_Vb.net_String - Fatal编程技术网

Vb.net 将字符串列表转换为由分隔符分隔的字符串

Vb.net 将字符串列表转换为由分隔符分隔的字符串,vb.net,string,Vb.net,String,将列表(字符串)转换为值以逗号(,)分隔的字符串的最佳方式是什么?,这取决于“最佳”的含义。内存占用最少的方法是首先计算最终字符串的大小,然后创建具有该容量的StringBuilder并将字符串添加到其中 StringBuilder将创建一个大小正确的字符串缓冲区,该缓冲区是作为字符串从ToString方法获得的。这意味着不会创建额外的中间字符串或数组 // specify the separator string separator = ", "; // calculate the fina

将列表(字符串)转换为值以逗号(
)分隔的字符串的最佳方式是什么?

,这取决于“最佳”的含义。内存占用最少的方法是首先计算最终字符串的大小,然后创建具有该容量的StringBuilder并将字符串添加到其中

StringBuilder将创建一个大小正确的字符串缓冲区,该缓冲区是作为字符串从ToString方法获得的。这意味着不会创建额外的中间字符串或数组

// specify the separator
string separator = ", ";

// calculate the final length
int len = separator.Length * (list.Count - 1);
foreach (string s in list) len += s.Length;

// put the strings in a StringBuilder
StringBuilder builder = new StringBuilder(len);
builder.Append(list[0]);
for (int i = 1; i < list.Count; i++) {
   builder.Append(separator).Append(list[i]);
}

// get the internal buffer as a string
string result = builder.ToString();
//指定分隔符
字符串分隔符=“,”;
//计算最终长度
int len=separator.Length*(list.Count-1);
foreach(列表中的字符串s)len+=s.长度;
//将字符串放入StringBuilder中
StringBuilder=新的StringBuilder(len);
builder.Append(列表[0]);
for(int i=1;i
我的解决方案:

string = ["a","2"]\n
newstring = ""
endOfString = len(string)-1
for item in string:
    newstring = newstring + item
if item != string[endOfString]:
    newstring = newstring ","'
dim str as string = ""
for each item as string in lst
  str += ("," & item)
next
return str.substring(1)
一个简单的解决方案:

string = ["a","2"]\n
newstring = ""
endOfString = len(string)-1
for item in string:
    newstring = newstring + item
if item != string[endOfString]:
    newstring = newstring ","'
dim str as string = ""
for each item as string in lst
  str += ("," & item)
next
return str.substring(1)

它从字符串
(“,”)

中去掉第一个字符,为什么不把它变成一个速度/性能问题?“实现…”的最快方法是什么?不能最好地用最快和/或高效来解释吗?不管你说的“最好”是什么意思,这可能不是最好的。@mquander:这是内存占用最少的方法,我在第一段中明确指出了这一点。如果你需要降低记忆负荷,这显然是最好的方法。在记忆强度方面没有太大区别。联接方法中没有中间字符串。这只是引用数组。分析会给我们答案,但我怀疑是否有足够大的差异来证明使用此代码而不是单行字符串是正确的。Join.唯一可以添加的是在
ToArray()
转换之前进行null/empty检查:
myListOfStrings.Where(函数)Not String.IsNullOrEmpty(s)).ToArray()
非常棒的代码,谢谢!只是Windows工作流基础/UIPATH用户的另一个提示,您可以将此代码放入工作流中,作为对科丽的上述代码的替代,忽略空白列表,只将“true”放入调用工作流文件活动的“EngEnOnError”属性中。不必真正转换它<代码> toRayAy()/<代码>。你可以按原样使用它
String.Join(“,”,myListOfStrings)
伪代码有时很好,但这里更倾向于实际的语言实现。