Как убрать текст после персонажа? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть массив, который содержит пользователя и пароли в user: pass, и мне нравится ro удалить строки, которые передают менее 8 символов, или пароль использует повторяющиеся символы, такие как 111111,22222222222, ...

Я пробовал string.take, но он полностью принимает строки, мне нужно условное удаление.

public string[] lines;

//open file dialogue to load the user pass file

lines = File.ReadAllLines(openFileDialog1.FileName);

//delete button click event
//the place that I have problem

У меня есть электронная почта: комбинация проходов выглядит так: email1: 1234567895121 email2: 12345 email4: 11111 email5 "454545454545

и я хотел бы, чтобы вывод был похож на email1: 1234567895121 email5 "454545454545

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Просто зациклите символы каждой строки и посмотрите, равен ли ток предыдущему:

public string[] lines = File.ReadAllLines(openFileDialog1.FileName);
var filteredLines = new List<string>(lines);
foreach(var line in lines)
{
    var pair = line.Split(':');
    var mail = pair[0];
    var pass = pair[1]; // may throw exception on invalid format of your line
    for(int i = 1; i < pass.Length; i++)
    {
        if(pass[i] == pass[i - 1])
        {
            filteredLines.Remove(line);
            break;   // will break inner loop and continue on next line
        }
    }
}
0 голосов
/ 22 сентября 2019
string[] lines =
{
    "email1:1234567895121",
    "email2:12345",
    "email3:22222222222",
    "email4:11111",
    "email5:454545454545"
};

lines = lines
    .Where(s =>
    {
        string pass = s.Split(new[] { ':' }, 2)[1];
        return pass.Length >= 8 && pass.Any(c => c != pass[0]);
    })
    .ToArray();

foreach (var s in lines)
    Console.WriteLine(s);

Вывод:

email1: 1234567895121
email5: 454545454545

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...