Для этого вы можете использовать Regex. Ваш шаблон Regex может быть таким:
\b(Mr|Ms|Dr|Mrs)\b
-
\b
означает Граница слова |
означает OR .
Итак, это регулярное выражение будет соответствовать Mr
, Ms
, Dr
или Mrs
на границах слова.
Изменить:
Проблема с вашим кодом в том, что Mr
является подмножеством Mrs
. Итак, любая строка содержит Mrs
, она также будет содержать Mr
. Поскольку вы сначала ищете Mr
, вы всегда найдете его до Mrs
.
Поиск по границам слов решает эту проблему простым способом.
Вот код C# для использования Regex для этой задачи:
string clientName = "Sunny Mrs Cool";
string[] stringArray = { "Mr", "Ms", "Dr", "Mrs" };
string pattern = $"\\b({string.Join("|", stringArray)})\\b"; // or simply just "\b(Mr|Ms|Dr|Mrs)\b"
Console.WriteLine(Regex.Match(clientName, pattern).Groups[1].Value); // prints "Mrs"