C#自动多行字符串修剪
我想知道如何在某个字符后修剪数组中的每个字符串,例如,我有一个文本框,其中放置了一个多行字符串,如: HelloWorld:123 班机:肯尼迪 然后我想单击一个按钮,在第二个文本框中,每行中的所有内容都应该在“:”之后进行修剪 文本框2中的输出: 地狱世界 IamABerlinerC#自动多行字符串修剪,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
使用
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他更新了最容易实现和理解的解决方案,是最有效的解决方案,但如果不太使用或理解正则表达式,大多数人很难理解