#c# #string
#c# #строка
Вопрос:
Входной запрос
select * from mytable where projectname = __$ProjectName$__ and projectid = __$ProjectId$__ and env = __$EnvType$__
Я хочу, чтобы список строк ( List<string>
) выводился ниже.(двойное подчеркивание доллар «строка» доллар двойное подчеркивание)
Язык: C#
__ $ProjectName$__
__ $ProjectId$__
__ $EnvType$__
Комментарии:
1. Вы можете использовать регулярное выражение, что-то вроде
(__$[^$] $__)
и получить все совпадения с классом Regex2. Используйте соединение строк «amp;__amp;», затем добавьте в начало » $» и в конец «amp; «.
Ответ №1:
Используя Linq:
List<string> output = input.Split(' ').Where(x => x.StartsWith("__$") amp;amp; x.EndsWith("$__")).ToList();
Комментарии:
1. Будьте осторожны с разделением по пробелу: если запрос
...where projectname=__$ProjectName$__ and ...
(пожалуйста, обратите внимание на отсутствие пробела после=
),__$ProjectName$__
ключ не будет извлечен
Ответ №2:
Попробуйте регулярные выражения; если ключ
- Начинается с
__$
- идентификатор содержит (который начинается с буквы
A..Z
,a..z
может содержать буквы или и цифрыA..Z
,a..z
,0..9
) - Заканчивается на
$__
соответствующий шаблон __$[A-Za-z] [A-Za-z0-9]*$__
Код:
using System.Text.RegularExpressions;
...
string source =
"select * from mytable where projectname = __$ProjectName$__ and projectid = __$ProjectId$__ and env = __$EnvType$__";
List<string> keys = Regex
.Matches(source, @"__$[A-Za-z] [A-Za-z0-9]*$__")
.OfType<Match>()
.Select(match => match.Value)
.ToList();
Console.Write(string.Join(Environment.NewLine, keys));
Результат:
__$ProjectName$__
__$ProjectId$__
__$EnvType$__
Ответ №3:
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var expression = @"select * from mytable where projectname = __$ProjectName$__ and projectid = __$ProjectId$__ and env = __$EnvType$__";
var output = new Regex(@"__$[^s] ?$__")
.Matches(expression)
.Cast<Match>()
.Select(m => m.Value)
.ToList();
output.ForEach(Console.WriteLine);
}
}
}
Комментарии:
1. Ваше регулярное выражение может соответствовать пустым строкам и незаполненным строкам