正则表达式将每个单词的每个首字母大写并忽略一些

时间:2016-11-25 15:46:12

标签: c# regex

嘿伙计们,我怎么能创建一个正则表达式来大写每个单词的每个首字母并忽略一些单词,如:dos,de,da。

我想要一个这样的字符串:" TEMporADA DOS TECNologoS"

将成为:" Temporada dos Tecnologos"。

由于

1 个答案:

答案 0 :(得分:2)

不需要正则表达式。您可以先使用TextInfo.ToTitleCase,然后在"忽略" -words:

上应用小写规则(您已将DOS更改为dos)
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);