C# 自动化多行字符串 Trim
C# Automation Multiline String Trim
我想知道如何 trim 数组的每个字符串都在某个字符之后,例如,我有 1 个文本框,我在其中放置了一个多行字符串,例如:
HelloWorld:123
IAmABerliner:JFK
然后我想单击一个按钮,在第二个文本框中,每一行中的所有内容都应 trim在“:”之后
文本框 2 中的输出:
HelloWorld
IamABerliner
使用string.Split
方法,只取第一部分:
string result = textBox2.Text.Split(':')[0];
对于多行字符串:
string result = string.Empty;
foreach (string line in textBox2.Text.Split(Environment.NewLine.ToCharArray()))
{
result += line.Split(':')[0] + Environment.NewLine;
}
这可能不是最优雅的解决方案,但这是我想到的。
string input = TextBox1.Text;
string[] input_split = input.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string output = "";
for(int i = 0; i < input_split.Length; i++)
{
string[] split_again = input_split[i].Split(':');
output += split_again[0];
}
TextBox2.Text = output;
我测试了它并给出了所需的输出。
WinForms 文本框有一个 Lines 属性。
您可以使用 Linq 遍历这些行并在 :
上拆分,然后采用 First()
索引
someTextBox.Lines = someTextBox.Lines.Select(x => x.Split(':').First()).ToArray();
只是一个替代方法,我真的更喜欢其他方法,但您也可以使用正则表达式:
txtInput.Text = System.Text.RegularExpressions.Regex.Replace(txtInput.Text, "(?m):.*$", string.Empty);
(?m)
开启多行模式
:
匹配文字冒号
.*
匹配除换行符 (.
) 之外的任何字符的零个或多个 (*
)
由于启用了多行模式,$
匹配行尾(但不匹配换行符)
您可以使用这个小片段来获取您想要的字符串:
string trimmedInput = string.Join(
"\n",
input
.Split('\n')
.Select(s => s.Substring(0, s.IndexOf(":"))));
它首先获取所有行的数组,然后在分号后修剪它,然后将它们放回一个字符串而不是行数组中。
遵循使用 StringBuilder 的简单代码并拆分为我工作。
StringBuilder sb = new StringBuilder();
var st = textBox1.Text.Split('\n');
for (int i = 0; i < st.Length; i++)
{
sb.AppendLine(st[i].Split(':')[0]);
}
textBox2.Text = sb.ToString();
我想知道如何 trim 数组的每个字符串都在某个字符之后,例如,我有 1 个文本框,我在其中放置了一个多行字符串,例如:
HelloWorld:123
IAmABerliner:JFK
然后我想单击一个按钮,在第二个文本框中,每一行中的所有内容都应 trim在“:”之后
文本框 2 中的输出:
HelloWorld
IamABerliner
使用string.Split
方法,只取第一部分:
string result = textBox2.Text.Split(':')[0];
对于多行字符串:
string result = string.Empty;
foreach (string line in textBox2.Text.Split(Environment.NewLine.ToCharArray()))
{
result += line.Split(':')[0] + Environment.NewLine;
}
这可能不是最优雅的解决方案,但这是我想到的。
string input = TextBox1.Text;
string[] input_split = input.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string output = "";
for(int i = 0; i < input_split.Length; i++)
{
string[] split_again = input_split[i].Split(':');
output += split_again[0];
}
TextBox2.Text = output;
我测试了它并给出了所需的输出。
WinForms 文本框有一个 Lines 属性。
您可以使用 Linq 遍历这些行并在 :
上拆分,然后采用 First()
索引
someTextBox.Lines = someTextBox.Lines.Select(x => x.Split(':').First()).ToArray();
只是一个替代方法,我真的更喜欢其他方法,但您也可以使用正则表达式:
txtInput.Text = System.Text.RegularExpressions.Regex.Replace(txtInput.Text, "(?m):.*$", string.Empty);
(?m)
开启多行模式:
匹配文字冒号.*
匹配除换行符 (.
) 之外的任何字符的零个或多个 ($
匹配行尾(但不匹配换行符)
*
)
由于启用了多行模式,您可以使用这个小片段来获取您想要的字符串:
string trimmedInput = string.Join(
"\n",
input
.Split('\n')
.Select(s => s.Substring(0, s.IndexOf(":"))));
它首先获取所有行的数组,然后在分号后修剪它,然后将它们放回一个字符串而不是行数组中。
遵循使用 StringBuilder 的简单代码并拆分为我工作。
StringBuilder sb = new StringBuilder();
var st = textBox1.Text.Split('\n');
for (int i = 0; i < st.Length; i++)
{
sb.AppendLine(st[i].Split(':')[0]);
}
textBox2.Text = sb.ToString();