C#自动多行字符串修剪

C#自动多行字符串修剪,c#,string,winforms,edit,trim,C#,String,Winforms,Edit,Trim,我想知道如何在某个字符后修剪数组中的每个字符串,例如,我有一个文本框,其中放置了一个多行字符串,如: HelloWorld:123 班机:肯尼迪 然后我想单击一个按钮,在第二个文本框中,每行中的所有内容都应该在“:”之后进行修剪 文本框2中的输出: 地狱世界 IamABerliner 使用string.Split方法,只取其第一部分: string result = textBox2.Text.Split(':')[0]; 对于多行字符串: string result = string.Emp

我想知道如何在某个字符后修剪数组中的每个字符串,例如,我有一个文本框,其中放置了一个多行字符串,如:

HelloWorld:123

班机:肯尼迪

然后我想单击一个按钮,在第二个文本框中,每行中的所有内容都应该在“:”之后进行修剪

文本框2中的输出:

地狱世界

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;
string input=TextBox1.Text;
string[]input\u split=input.split(Environment.NewLine.ToCharArray(),StringSplitOptions.removemptyEntries);
字符串输出=”;
对于(int i=0;i
我测试了它,它给出了所需的输出。

WinForms TexBox有一个属性

您可以使用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和split的简单代码

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();
StringBuilder sb=新建StringBuilder();
var st=textBox1.Text.Split('\n');
对于(int i=0;i
win forms,很抱歉没有提及这一点。我是这个论坛的新手。。。尽我所能:(你应该在换行符上使用和拆分,然后用它拆分
字符上的每一行。你能给我发代码吗?我想这会对你有帮助。这不包括换行符/换行符。行吗*对不起,我很笨;提前谢谢你的反馈。欢迎你不同意。我更喜欢简单的这对于不必要的
Regex
Linq
for
循环来说是非常重要的…lambda对于每个循环来说都是简化的,但是我想对于初学者来说是可以的,我们不想这么快就把我们的新开发人员搞糊涂了!你只需要拿我给出的字符串作为例子。但是我想从windowsform文本框中获取多行字符串。是的,我以它们为例,但下面的代码适用于该格式的任何多行输入。我对其进行了编辑,使其更通用。您应该能够将其复制/粘贴到代码中,并更改文本框名称,这样就可以了。lambda>linq!您不能在foreach中执行s=method@EuropeanRiven在一个电话里没有注意,检查t他更新了最容易实现和理解的解决方案,是最有效的解决方案,但如果不太使用或理解正则表达式,大多数人很难理解