20

这是我的代码:

With ad.Tables(2)
    For i As Integer = 0 To .Rows.Count - 1
        If .Rows(i)("name") & "" <> "" Then
            temp &= .Rows(i)("name") & ", "
        End If
    Next
End With
temp = temp.Trim(",")
testing &= "&Name=" & temp & vbCrLf

这是在字符串的末尾得到一个逗号。但如果我这样做

temp = temp.Trim.Trim(",")

所有逗号都被删除。

如何保留所有逗号并仅删除最后一个逗号?

4

9 回答 9

26
temp = temp.TrimEnd(CChar(","))

那会做到的,我认为这是最简单的方法。

于 2014-03-20T20:06:12.953 回答
16
temp = temp.Trim().Substring(0, temp.Length - 1)

或者

temp = temp.Trim().Remove(temp.Length - 1)
于 2010-04-27T19:46:07.847 回答
4

如果在循环中设置分隔符,则可以避免使用 Trim/extra 字符

Dim delimiter as string = ""
For i As Integer = 0 To .Rows.Count - 1
   If .Rows(i)("name") & "" <> "" Then
      temp &= delimiter & .Rows(i)("name")
      delimiter = ","
   End If
Next
于 2010-04-27T20:17:56.377 回答
2

Trim()函数有一个Char()(静态字符数组)参数,您不需要Char显式传递。

' VB.Net Version
", Hello ^_^ ^_^ ,,, , ,,   ,, ,".Trim({" "c, ","c})

//C# version
", Hello ^_^ ^_^ ,,, , ,,   ,, ,".Trim({' ', ','})

会产生输出

"Hello ^_^ ^_^"

多参数.Trim()从字符串的开头和结尾删除指定的字符。如果您只想修剪开头或结尾,请分别使用.TrimStart().TrimEnd()

于 2015-02-20T18:44:12.270 回答
2

这有效:

dim AlarmStr as string="aaa , bbb , ccc ,  "
AlarmStr = AlarmStr.Remove(AlarmStr.LastIndexOf(","))
于 2018-04-15T13:44:52.337 回答
0

我想知道,基于 OP 的代码示例,没有人建议使用String.Join或构建输出StringBuilder

Dim names As New List(Of String)
With ad.Tables(2)
    For i As Integer = 0 To .Rows.Count - 1
        ' DataRow("columnName").ToString() returns value or empty string if value is DbNull
        If .Rows(i)("name").ToString() <> "" Then
           names.Add(.Rows(i)("name"))
        End If
    Next
End With

Dim temp As String = String.Join(", ", names)
testing &= "&Name=" & temp & vbCrLf

使用 LINQ 和DataRow扩展方法.Field(Of T)代码会看起来更简单

Dim names = ad.Tables(2).
    AsEnumerable().
    Select(row => row.Field<String>("name")).
    Where(name => String.IsNullOrEmpty(name) = False)

Dim temp As String = String.Join(", ", names)
testing &= "&Name=" & temp & vbCrLf

如果您走得更远,您可以(应该)StringBuilder用于构建字符串并使用Aggregate方法从集合中构建字符串

于 2019-11-16T20:31:12.913 回答
0

在添加最后一个逗号之前检查循环是否完成。#清洁器

While dr.Read
   For c As Integer = 0 To dr.FieldCount - 1
       s.Append(dr(c).ToString.Trim)

       'This line checks if the loop is ending before adding a comma           
       If (c < dr.FieldCount - 1) Then s.Append(",")

   Next
   s.Append(vbCrLf)
End While
于 2019-05-17T15:00:17.343 回答
-1

我知道这有点奇怪,但我发现这对我有用:

视觉基础:

每次:mystring = "今天,我爱出门,, , , ,"(少于五个逗号和空格)

mystring.Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",")
于 2015-04-10T15:54:33.010 回答
-2
temp = temp.TrimEnd()

这会从字符串中修剪尾随空格。

于 2012-11-21T10:24:16.190 回答