如何在没有逗号的情况下结束for循环?VB.NET
我正要使用for循环保存一个单元格中的每个数字,下面是我的代码:如何在没有逗号的情况下结束for循环?VB.NET,vb.net,Vb.net,我正要使用for循环保存一个单元格中的每个数字,下面是我的代码: For Each node As XmlNode In xmlnode Dim X As String Dim Y As String Dim Z As String X = node.SelectSingleNode("X").InnerText
For Each node As XmlNode In xmlnode
Dim X As String
Dim Y As String
Dim Z As String
X = node.SelectSingleNode("X").InnerText
Y = node.SelectSingleNode("Y").InnerText
Z = node.SelectSingleNode("Z").InnerText
Dim noOfPts As Integer = 0 'number of data points in data
For i As Double = 0 To noOfPts
result = X + ","
result2 = Y + ","
Next
Next
问题是我要结束循环而不保存逗号。与其说是“1,2,3,4,5”,不如说是“1,2,3,4,5”,从循环的末尾去掉逗号。我喜欢这样做:
For i As Double = 0 To noOfPts
If result <> "" Then result &= ", "
result &= X
If result2 <> "" Then result2 &= ", "
result2 &= Y
Next
Dim xBuilder AS New StringBuilder()
Dim yBuilder As New StringBuilder()
Dim delimiter As String = ", "
For Each node As XmlNode In xmlnode
Dim X As String = node.SelectSingleNode("X").InnerText
Dim Y As String = node.SelectSingleNode("Y").InnerText
Dim Z As String = node.SelectSingleNode("Z").InnerText
For i As Integer = 0 To noOfPts
xBuilder.Append(X).Append(delimiter)
yBuilder.Append(Y).Append(delimiter)
Next
Next
' use Math.Max to prevent exception if builder is empty
xBuilder.Length = Math.Max(xBuilder.Length - delimiter.Length, 0)
yBuilder.Length = Math.Max(yBuilder.Length - delimiter.Length, 0)
Dim resultX As String = xBuilder.ToString() ' 1, 2, 3, 4, 5
Dim resultY As String = yBuilder.ToString()
对于i为双精度=0到noOfPts
如果结果为“”,则结果为
结果&=X
如果结果2“”,则结果2&=”
结果2&=Y
下一个
玩得开心 使用
StringBuilder
可以通过删除if
语句简化循环,并在大多数情况下提高效率(尤其是在循环中构建字符串时)
我们通过按分隔符的长度“剪切”stringbuilder的长度来删除最后一个“冗余”分隔符
要使用String.Join
您需要首先创建一个值集合
Dim xValues AS New List<string>()
Dim yValues As New List<string>()
For Each node As XmlNode In xmlnode
Dim X As String = node.SelectSingleNode("X").InnerText
Dim Y As String = node.SelectSingleNode("Y").InnerText
Dim Z As String = node.SelectSingleNode("Z").InnerText
For i As Integer = 0 To noOfPts
xValues.Add(X)
xValues.Add(Y)
Next
Next
Dim resultX As String = String.Join(", ", xValues) ' 1, 2, 3, 4, 5
Dim resultY As String = String.Join(", ", yValues)
Dim xValues AS New List()
将Y值设置为新列表()
将每个节点作为XmlNode中的XmlNode
将X标注为字符串=节点。选择SingleNode(“X”)。InnerText
将Y调为String=node。选择SingleNode(“Y”)。InnerText
将Z标注为字符串=节点。选择SingleNode(“Z”)。InnerText
对于i,作为整数=0到noOfPts
xValues.Add(X)
xValues.Add(Y)
下一个
下一个
Dim resultX As String=String.Join(“,”,xValues)”1,2,3,4,5
Dim resultY As String=String.Join(“,”和Y值)
use string.join.code示例不清楚,result
和result2
来自何处?我们在每次迭代中给它分配新的值?问题很清楚,答案应该是String.Join
,这里已经有少数人提出了这个建议。如果能听到否决投票的原因,我将不胜感激。如果答案是错误的,我们将很乐意修复或删除。从可读性和效率的角度来看,这个答案包含两种可接受的方法。我建议使用String.Join
选项,该选项散列清晰易懂的步骤:1.收集信息,2。根据这些信息构建输出。1<从可读性的角度来看,代码>If-Then是一种糟糕的方法。2.将字符串与&
运算符连接将创建原始值和附加值的副本,在循环中,它将增加每次迭代的几何级数内存消耗。适合这项工作的工具应该是StringBuilder
。谢谢你的提示,我已经对这一个进行了更新,但什么也没发生@ナンダルケジー 别担心,这可能只是因为你的名声不好。我很高兴你有所进步。当心!