带逗号和单引号的字符串连接,例如('ABC','DEF','GHI,'JKL')
String Concatenation with Comma and Single Quotes E.g. ('ABC','DEF','GHI,'JKL')
我一直在互联网上搜索如何在 vb.net 的 RichTextBox 控件中 Concatenate/Join 字符串上的单引号和逗号。示例 ('ABC','DEF','GHI,'JKL') 我今天在网上发现这段代码即使有前导空格和尾随空格也能正常工作,甚至连行都被删除了,但是 (' 和 ') 是失踪。你们可以修改代码吗?
Code:
RichTextBox1.Text = Regex.Replace(RichTextBox1.Text.Trim, "\s+", "','")
Inside the RichTextBox1
ABC
DEF
GHI
JKL
Result: ABC','DEF','GHI','JKL
Desired Result: ('ABC','DEF','GHI','JKL')
试试这个
' starting RichTextBox1 contains
' ABC
' DEF
' GHI
' JKL
Dim lns() As String = RichTextBox1.Lines
For x As Integer = 0 To lns.Length - 1
lns(x) = String.Format("'{0}',", lns(x))
Next
lns(0) = "(" & lns(0)
lns(lns.Length - 1) = lns(lns.Length - 1).TrimEnd(","c)
lns(lns.Length - 1) &= ")"
RichTextBox1.Lines = lns
不知道你在真实场景中处理了多少行,我选择使用 StringBuilder
。它创建可变的(可变的)字符串,使我们可以多次丢弃和重新创建字符串。
从 sb
开始 "("
。然后循环使用一个内插字符串,每个 line
都有一个嵌入变量。 AppendLine
将在文本后添加一个新行。
最后我们显示新字符串。在 .net 中,我们可以将点符号从左到右串起来。首先用 .ToString
将 StringBuilder
转换回实际的 String
。接下来,我们通过删除最后一个逗号和最后一个新行来清理新字符串的结尾。换行实际上由2个字符、回车return和换行组成。最后我添加了最后的“)”
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim lines() = File.ReadAllLines("some text file path")
Dim sb As New StringBuilder
sb.Append("(")
For Each line In lines
sb.AppendLine($"'{line}',")
Next
RichTextBox1.Text = sb.ToString.Trim({","c, Convert.ToChar(13), Convert.ToChar(10)}) & ")"
End Sub
如您所见,可以通过多种方式完成此操作。这是另一个:
myRichTextBox.Text = $"('{String.Join("'," & ControlsChars.Lf & "'", myRichTextBox.Lines)}')"
请注意,我在通常使用 Environment.NewLine
的地方使用了 ControlChars.Lf
,因为 RichTextBox
始终使用该换行符。我假设它与RTF格式和兼容性有关。
我一直在互联网上搜索如何在 vb.net 的 RichTextBox 控件中 Concatenate/Join 字符串上的单引号和逗号。示例 ('ABC','DEF','GHI,'JKL') 我今天在网上发现这段代码即使有前导空格和尾随空格也能正常工作,甚至连行都被删除了,但是 (' 和 ') 是失踪。你们可以修改代码吗?
Code:
RichTextBox1.Text = Regex.Replace(RichTextBox1.Text.Trim, "\s+", "','")
Inside the RichTextBox1
ABC
DEF
GHI
JKL
Result: ABC','DEF','GHI','JKL
Desired Result: ('ABC','DEF','GHI','JKL')
试试这个
' starting RichTextBox1 contains
' ABC
' DEF
' GHI
' JKL
Dim lns() As String = RichTextBox1.Lines
For x As Integer = 0 To lns.Length - 1
lns(x) = String.Format("'{0}',", lns(x))
Next
lns(0) = "(" & lns(0)
lns(lns.Length - 1) = lns(lns.Length - 1).TrimEnd(","c)
lns(lns.Length - 1) &= ")"
RichTextBox1.Lines = lns
不知道你在真实场景中处理了多少行,我选择使用 StringBuilder
。它创建可变的(可变的)字符串,使我们可以多次丢弃和重新创建字符串。
从 sb
开始 "("
。然后循环使用一个内插字符串,每个 line
都有一个嵌入变量。 AppendLine
将在文本后添加一个新行。
最后我们显示新字符串。在 .net 中,我们可以将点符号从左到右串起来。首先用 .ToString
将 StringBuilder
转换回实际的 String
。接下来,我们通过删除最后一个逗号和最后一个新行来清理新字符串的结尾。换行实际上由2个字符、回车return和换行组成。最后我添加了最后的“)”
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim lines() = File.ReadAllLines("some text file path")
Dim sb As New StringBuilder
sb.Append("(")
For Each line In lines
sb.AppendLine($"'{line}',")
Next
RichTextBox1.Text = sb.ToString.Trim({","c, Convert.ToChar(13), Convert.ToChar(10)}) & ")"
End Sub
如您所见,可以通过多种方式完成此操作。这是另一个:
myRichTextBox.Text = $"('{String.Join("'," & ControlsChars.Lf & "'", myRichTextBox.Lines)}')"
请注意,我在通常使用 Environment.NewLine
的地方使用了 ControlChars.Lf
,因为 RichTextBox
始终使用该换行符。我假设它与RTF格式和兼容性有关。