每句话首字母怎么大写?我知道如何将每个单词的第一个字母大写。但是我想知道如何在C#中将每个句子的首字母大写。这不一定是一个微不足道的问题。句子可以以许多不同的标点符号结尾,而那些相同的标点符号并不总是表示句子的结尾(像Dr.这样的缩写可能会带来特殊的问题,因为它们可能有很多)。话虽这么说,您可以通过使用正则表达式在句末标点符号后查找单词来获得“足够好”的解决方案,但您必须添加一些特殊情况。逐字或逐字地处理字符串可能更容易。您仍然必须处理所有相同的特殊情况,但这可能比尝试将其构建到正则表达式中更容易。语法和标点符号有很多奇怪的规则。您提出的任何解决方案都可能不会将它们全部考虑在内。需要考虑的一些事项:将句子视为包含空格、以句点结尾的单词。此页面上有一些VB代码,转换为C#应该不难。但是,后续帖子指出了算法中的一个错误。这个博客有一些声称可以工作的C#代码:它自动将每个句点(句号)、问号和感叹号之后的第一个字母大写。2010年2月16日更新:我重新修改了它,因此它不会影响像URL这样的字符串不要忘记带括号的句子。此外,*如果用作粗体文本的标识符。http://www.grammarbook.com/punctuation/parens.asp我需要做类似的事情,这符合我的目的。我将我的“句子”作为IEnumerable字符串传递。//从文本文件中读取句子(每个句子单独一行)IEnumerablelines=File.ReadLines(inputPath);//调用下面的方法lines=CapitalizeFirstLetterOfEachWord(lines);privatestaticIEnumerableCapitalizeFirstLetterOfString(IEnumerableinputLines){//将输出:LoremlipsumetListoutputLines=newList();TextInfotextInfo=newCultureInfo("en-US",false).TextInfo;foreach(inputLines中的字符串行){stringlineLowerCase=textInfo.ToLower(line);string[]lineSplit=lineLowerCase.Split('');布尔首先=真;for(inti=0;i}我知道我来晚了,但就像你一样,我需要拆分每个句子的每个第一个字符都用完了。我刚到这里(以及我研究时的许多其他页面)并没有找到任何对我有帮助的东西。所以,我烧了一些神经元,自己做了一个算法。这是我扩展句子的扩展方法:publicstaticstringCapitalizeSentences(thisstringInput){if(String.IsNullOrEmpty(Input))returnInput;如果(Input.Length==1)返回Input.ToUpper();Input=Regex.Replace(Input,@"s+","");Input=Input.Trim().ToLower();Input=Char.ToUpper(Input[0])+Input.Substring(1);varobjDelimiters=newstring[]{".","!","?"};foreach(varobjDelimiterinobjDelimiters){varvarDelimiterLength=objDelimiter.Length;varvarIndexStart=Input.IndexOf(objDelimiter,0);while(varIndexStart>-1){Input=Input.Substring(0,varIndexStart+varDelimiterLength)+(Input[varIndexStart+varDelimiterLength]).ToString().ToUpper()+Input.Substring((varIndexStart+varDelimiterLength)+1);varIndexStart=Input.IndexOf(objDelimiter,varIndexStart+1);}}返回输入;}有关算法的详细信息:这个简单的算法从删除所有双空格开始。然后,它将字符串的第一个字符大写。然后搜索每个分隔符。找到一个后,将下一个字符大写。我可以轻松添加/删除或编辑分隔符,因此您只需稍作更改即可更改代码的工作方式。它不检查子字符串是否超过字符串长度,因为定界符以空格结尾且算法以“Trim()”开头,因此如果在字符串中找到每个定界符,则每个定界符后面将跟另一个字符。重要提示:您没有指定您的需求。我的意思是,它是一个语法校正器,只是为了美化文本等......所以,重要的是要考虑我的算法非常适合我的需求,它可能与你的不同。*创建此算法的目的是为用户格式化“规范化的”产品描述(几乎总是完全大写)与我想要的相反。所以它在语法上不是完美的。*另外,由于格式错误,字符可能没有大写。*我选择在分隔符中包含空格,所以“http://www.stackoverflow.com”不会变成“http://www.Stackoverflow.Com”。另一方面,像“Theboxisblueandisonthefloor”这样的句子会变成“Theboxisblueandis在地板上”而不是“盒子是蓝色的。它在地板上”*在缩写的情况下,它将大写,但是同样,这不是问题,因为我的需求只是显示产品描述(语法不是非常critical).在像Mr.或Dr.这样的缩写中,第一个字符是一个名字,所以,它是完美的大写。如果你或其他人需要更准确的算法,我很乐意改进它。希望我能帮助别人!但是,您可以创建一个类或方法来转换TitleCase中的每个文本。这里是你只是调用方法的例子。以上就是C#学习教程:如何将每句话首字母大写?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicstaticstringToTitleCase(stringstrX){string[]aryWords=strX.Trim()。分裂('');列出lstLetters=newList();列出lstWords=newList();foreach(aryWords中的字符串strWord){intiLCount=0;foreach(charchrLetterinstrWord.Trim()){if(iLCount==0){lstLetters.Add(chrLetter.ToString().ToUpper());}else{lstLetters.Add(chrLetter.ToString().ToLower());}iLCount++;}lstWords.Add(string.Join("",lstLetters));lstLetters.Clear();}stringstrNewString=string.Join("",lstWords);返回字符串;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
