C#自动化多行字符串修剪

时间:2018-08-02 18:58:31

标签: c# string winforms edit trim

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

  

HelloWorld:123

     

IAmABerliner:JFK

然后我要单击一个按钮,并在第二个TextBox中的每行中的所有内容都应在“:”之后修剪

文本框2中的输出:

  

HelloWorld

     

IamABerliner

6 个答案:

答案 0 :(得分:4)

WinForms Texboxes具有Lines属性。

您可以使用Linq遍历这些行并在:上拆分,然后获取First()索引

someTextBox.Lines = someTextBox.Lines.Select(x => x.Split(':').First()).ToArray();

答案 1 :(得分:1)

只是一种替代方法,我真的更喜欢其他方法,但是您也可以使用regex:

txtInput.Text = System.Text.RegularExpressions.Regex.Replace(txtInput.Text, "(?m):.*$", string.Empty);
  • (?m)打开多行模式
  • :匹配文字冒号
  • .*匹配除换行符(*)以外的任何字符的零个或多个(.
  • $与行尾(但不换行)匹配,因为启用了多行模式

答案 2 :(得分:0)

这可能不是最优雅的解决方案,但这就是我想出的。

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;

我对其进行了测试,并给出了所需的输出。

答案 3 :(得分:0)

您可以使用此小片段获取所需的字符串:

string trimmedInput = string.Join(
    "\n", 
    input
       .Split('\n')
       .Select(s => s.Substring(0, s.IndexOf(":"))));

首先获取所有行的数组,然后在分号后将其修剪,然后将它们放回一个字符串而不是行数组中。

答案 4 :(得分:0)

使用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();

答案 5 :(得分:-2)

使用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;
}