将字符串转换为标题大小写

Mig*_*ura 5 c#

我需要转换为标题案例如下:

  1. 短语中的第一个单词;

  2. 换句话说,在同一短语中,哪个长度大于minLength.

我在看ToTitleCase但结果不是预期的.

因此,minLength = 2的短语"汽车非常快"将成为"汽车非常快".

我能够使用以下方法将第一个单词设为大写:

Char[] letters = source.ToCharArray();
letters[0] = Char.ToUpper(letters[0]);
Run Code Online (Sandbox Code Playgroud)

并获得我正在使用的单词:

Regex.Matches(source, @"\b(\w|['-])+\b"
Run Code Online (Sandbox Code Playgroud)

但我不知道如何把所有这些放在一起

谢谢你,米格尔

Ulu*_*rov 5

示例代码:

string input = "i have the car which is very fast";
int minLength = 2;
string regexPattern = string.Format(@"^\w|\b\w(?=\w{{{0}}})", minLength);
string output = Regex.Replace(input, regexPattern, m => m.Value.ToUpperInvariant());
Run Code Online (Sandbox Code Playgroud)

更新(对于单个字符串中有多个句子的情况).

string input = "i have the car which is very fast. me is slow.";
int minLength = 2;
string regexPattern = string.Format(@"(?<=(^|\.)\s*)\w|\b\w(?=\w{{{0}}})", minLength);
string output = Regex.Replace(input, regexPattern, m => m.Value.ToUpperInvariant());
Run Code Online (Sandbox Code Playgroud)

输出:

I Have The Car Which is Very Fast. Me is Slow.
Run Code Online (Sandbox Code Playgroud)

你不妨来处理!,?和其他符号,那么你可以使用下面的.您可以根据需要添加任意数量的句子终止符号.

string input = "i have the car which is very fast! me is slow.";
int minLength = 2;
string regexPattern = string.Format(@"(?<=(^|[.!?])\s*)\w|\b\w(?=\w{{{0}}})", minLength);
string output = Regex.Replace(input, regexPattern, m => m.Value.ToUpperInvariant());
Run Code Online (Sandbox Code Playgroud)

更新(2) - 转换e-marketingE-Marketing(视为-有效的单词符号):

string input = "i have the car which is very fast! me is slow. it is very nice to learn e-marketing these days.";
int minLength = 2;
string regexPattern = string.Format(@"(?<=(^|[.!?])\s*)\w|\b\w(?=[-\w]{{{0}}})", minLength);
string output = Regex.Replace(input, regexPattern, m => m.Value.ToUpperInvariant());
Run Code Online (Sandbox Code Playgroud)