2016-11-25 2 views
0

эй, ребята, как я могу создать регулярное выражение для заглавной буквы каждой первой буквы каждого слова и игнорировать некоторые слова вроде: dos, de, da.regexp, чтобы загладить каждую первую букву каждого слова и игнорировать некоторые

я хочу строку, как это: "Temporada DOS TECNologoS"

быть: "Temporada дос Tecnologos".

Thanks

+1

У вас есть список всех слов, которые вы хотите игнорировать? Это не то, что вы можете определить набор или общие правила для ... –

+0

regex, возможно, не особенно необходимо, вы можете иметь строку ']' слов, которые вы хотите игнорировать, а затем разделить данную строку («* Temporada dos Tecnologos * ") в этом случае пространствами. Затем вы можете установить их все в нижний регистр, а затем проверить, находится ли каждое слово в массиве, если вы не можете установить первую букву в верхний регистр. После этого вы можете присоединиться к ним всем с пространством и voila –

+0

можете ли вы сказать, что слова меньше 3-х длинной гарантии, чтобы начать строчные буквы? –

ответ

2

Нет необходимости в регулярном выражении. Вы можете использовать первый TextInfo.ToTitleCase, а затем применить строчную правило (вы изменили DOS для DOS) на «Ignore» -слов:

string text = "TEMporADA DOS TECNologoS"; 
string[] ignoreWords = {"dos", "de", "da"}; 

text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text); // uppercase first letter all 
var newWords = text.Split() 
    .Select(w => ignoreWords.Contains(w, StringComparer.OrdinalIgnoreCase) 
        ? Char.ToLower(w[0]) + w.Substring(1) 
        : w); 
text = String.Join(" ", newWords); 
+0

Довольно многое, что я написал бы, +1 –

Смежные вопросы