これは私のコードです:
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(",")
すべてのコンマが削除されます。
すべてのカンマを保持し、最後のカンマのみを削除するにはどうすればよいですか?
temp = temp.TrimEnd(CChar(","))
それでうまくいくので、一番簡単な方法だと思います。
temp = temp.Trim().Substring(0, temp.Length - 1)
または
temp = temp.Trim().Remove(temp.Length - 1)
ループ内で区切り文字を設定すると、トリム/余分な文字を回避できます
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
Trim()
関数にはChar()
(文字の静的配列)パラメータがあり、Char
を明示的に渡す必要はありません。
_' VB.Net Version
", Hello ^_^ ^_^ ,,, , ,, ,, ,".Trim({" "c, ","c})
//C# version
", Hello ^_^ ^_^ ,,, , ,, ,, ,".Trim({' ', ','})
_
出力を生成します
_"Hello ^_^ ^_^"
_
マルチパラメータ.Trim()
は、指定された文字を文字列の最初と最後の両方から削除します。先頭または末尾のみを削除する場合は、それぞれ.TrimStart()
または.TrimEnd()
を使用します。
これは機能します:
dim AlarmStr as string="aaa , bbb , ccc , "
AlarmStr = AlarmStr.Remove(AlarmStr.LastIndexOf(","))
私は少し奇妙なことを知っていますが、これは私にとってはうまくいくことがわかりました:
Visual Basic:
毎回:mystring = "today、I love out out、、、、"(カンマとスペースが5つ未満)
mystring.Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",").Trim.TrimEnd(",")
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
メソッドを使用してコレクションから文字列を作成できます(推奨)
最後のコンマを追加する前に、ループが終了したかどうかを確認してください。 #クリーナー
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
temp = temp.TrimEnd()
これにより、文字列から末尾のスペースが削除されます。