簡體   English   中英

c#中的句子格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM