我需要转换为标题案例如下:
短语中的第一个单词;
换句话说,在同一短语中,哪个长度大于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)
但我不知道如何把所有这些放在一起
谢谢你,米格尔
示例代码:
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-marketing为E-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)