C # Как выбрать любой символ, если строка начинается с "*:" - PullRequest
0 голосов
/ 18 марта 2019

Я прочитал текстовый файл, используя метод readline.

var txtfile = File.readlines([Filepath])
.where(s => s.startswith(" U:"));

Есть ли хитрость, чтобы выбрать любую букву?Примерно так: псевдокод

s.startswith(" *:");

Это потому, что имя моего диска постоянно меняется.Обратите внимание, что это должен быть точный порядок букв.Спасибо!

Ответы [ 4 ]

2 голосов
/ 18 марта 2019

Вы можете использовать ниже регулярное выражение.

.Where(s => Regex.Match(s,@"^\s.{1}:.*").Success);

Вот краткое объяснение этого регулярного выражения.

^ - начало строки

\s - пробел

.{1} - ровно одно вхождение любого символа

: - соответствует точке с запятой

.* - 0 или более символов

2 голосов
/ 18 марта 2019

Как насчет этого?Если в строках первый символ - пробел (), а третий - двоеточие (:).Тогда между ними может быть любой символ.

s[0] == ' ' && s[2] == ':'

Как указано в комментариях, вышеприведенное не было завершено на 100%.Это более полная строка кода:

.where(s => s.Length >= 3 && s[0] == ' ' && s[2] == ':');

Этот код добавляет условие s.Length >= 3, которое гарантирует, что в строке будет не менее 3 символов.Если вы попытаетесь получить доступ к персонажу по несуществующему индексу, вы получите IndexOutOfRangeException.


Производительность

Это наиболее эффективное условие для выполнения ваших требований.,Дополнительная оптимизация может быть выполнена по запросу, но это всегда намного быстрее, чем Regex.Это также на 100% эквивалентно регулярному выражению в другом ответе, но намного быстрее.

0 голосов
/ 11 июня 2019

Вы можете использовать оператор VB Like . Если вы используете .NET Core, вам необходимо установить пакет Microsoft.VisualBasic . Если вы используете .NET Framework, вам нужна ссылка на Microsoft.VisualBasic.dll.

using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;

.Where(s => LikeOperator.LikeString(s, " [A-Z]:*", CompareMethod.Text))
0 голосов
/ 18 марта 2019
s.Substring(2, 1) == ":"

например:

" e:".Substring(2, 1) == ":" // will return true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...