我在控制台中创建了一个程序,它从每行中用“:”划分的文件中分割两个文本,并检查它们是否符合要求。文件中的每一行都有一个语法“xxxxx:xxxxx”。
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string textone, texttwo, filename;
Regex reg = new Regex("/W");//svi characteri osim A-Z,a-z,0-9
Regex numb = new Regex("[a-zA-Z]");
Regex numbek = new Regex("[0-9]");
Regex donjacrta = new Regex("_");
filename = Console.ReadLine();//should load richtextbox instead
string[] linije = System.IO.File.ReadAllLines(filename);
for (int i = 0; i < linije.Length; i++)
{
string trenutni = linije[i];
int indexx = trenutni.IndexOf(':');
textone = trenutni.Substring(0, indexx);
texttwo = trenutni.Substring((indexx + 1), (trenutni.Length) - (indexx + 1));
if (textone.Length < 3 || textone.Length > 25 || reg.IsMatch(textone) || donjacrta.IsMatch(textone) || !numb.IsMatch(textone) || !numbek.IsMatch(textone))
{
continue;
}
else if (texttwo.Length < 3 || texttwo.Length > 30 )
{
continue;
}
else
{
Console.WriteLine(textone + ":" + texttwo);
}
}
}
}
}
(当我尝试在此处格式化代码时,会删除/隐藏部分代码,不知道原因)
在我的WindowsForms中,我首先将文件加载到RichTextBox中。从那里我需要以某种方式连接它并使其成为:
清除整个richtextbox并开始只键入有效行
删除无效行。
答案 0 :(得分:0)
我花了一些时间来了解您尝试做什么以及您想要什么,但是,我认为我找到了您的解决方案。您几乎可以删除您编写的所有代码,并将其替换为单个正则表达式。
我相信你要做的事情:
:
拆分的字符串(即xxxxx:xxxxx
- 其中x
定义如下),每个字符串在文本文件中占用一行:
之前和之后)仅匹配a-zA-Z0-9
(没有其他字符)^([a-zA-Z\d]{3,25}):([a-zA-Z\d]{3,30})$
对于示例C#程序,您可以使用以下内容。显然,您将替换逻辑以从文本文件而不是字符串中提取。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^([a-zA-Z\d]{3,25}):([a-zA-Z\d]{3,30})$";
string input = @"xxxxx:xxxxx
1adfasfdfasdfsdfsfsfssfsd:1asfdsfsdfsafsdfsadfdfsdfadf2s
sfsd12321:12sfs3123
@342fdfasd:1dsadafdsfs";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
xxxxx:xxxxx
1adfasfdfasdfsdfsfsfssfsd:1asfdsfsdfsafsdfsadfdfsdfadf2s
sfsd12321:12sfs3123
@342fdfasd:1dsadafdsfs
以下是匹配的字符串。每个字符串
xxxxx:xxxxx
xxxxx
xxxxx
1adfasfdfasdfsdfsfsfssfsd:1asfdsfsdfsafsdfsadfdfsdfadf2s
1adfasfdfasdfsdfsfsfssfsd
1asfdsfsdfsafsdfsadfdfsdfadf2s
sfsd12321:12sfs3123
sfsd12321
12sfs3123
a-zA-Z\d
中的任何字符在3到25次之间:
a-zA-Z\d
中任意字符3到30次