[英]Sentence case formatting in c#
我想在“句子案例”中更改字符串的大小寫。 我使用這個功能:
private string toSentenceCase(string sourcestring)
{
var lowerCase = sourcestring.ToLower();
lowerCase = Regex.Replace(lowerCase, @"(\r\n|\n\r|\n|\r)", "\r\n");
var r = new Regex(@"(^[a-z])|[?!.\r\n]\s+(.)", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
var result = r.Replace(lowerCase, s => s.Value.ToUpper());
return result;
}
用我的正則表達式我想抓住'。','?','!' 還有'\\ n'和'\\ r'。 我的代碼工作,除非句子之間沒有“空格”字符。 例如“第一個例子。有白色空間。” 成為“第一個例子。有白色空間。” 但“第二個例子。有白色空間。” 仍然是“第二個例子。它有白色空間。”
關於如何更改我的正則表達式以捕獲第二個示例的任何想法?
只需將\\s+
轉到\\s*
,因為\\s+
必須指望空格字符,其中\\s*
不會。
var r = new Regex(@"(^[a-z])|[?!.\r\n]\s*(.)", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
要么
var r = new Regex(@"(?:^|[?!.\r\n])\s*([a-z])", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.