当前位置: 首页 > 编程语言 > C#

C#学习教程:.NET方法将字符串转换为SentenceCaseShare

时间:2023-04-10 10:57:31 C#

.NET方法将字符串转换为SentenceCase我正在寻找将大写文本字符串转换为SentenceCase的函数。我能找到的所有示例都将文本转换为TitleCase。一般意义上的句子描述了句子中大写的使用方式。句格也描述了英语句子的标准大写,即句子的首字母大写,其余字母小写(除非有特殊原因需要大写,如专有名词、首字母缩略词等)。有人可以指出SentenceCase的脚本或函数的方向吗?.NET中没有内置任何内容-然而,这是正则表达式处理实际上工作正常的情况之一。我首先将整个字符串转换为小写,然后,作为第一个近似值,您可以使用正则表达式查找所有序列,如[az].s+(.)并使用ToUpper()将捕获的子组转换为大写。RegEx类有一个重载的Replace()方法,它接受一个MatchEvaluator委托,它允许您定义如何替换匹配值。这是一个代码示例,它可以工作:varsourcestring="THISISAGROUP.OFCAPITALIZED.LETTERS.";//首先将整个字符串转换为小写varlowerCase=sourcestring.ToLower();//匹配字符串的第一句,以及后面的句子varr=newRegex(@"(^[az])|.s+(.)",RegexOptions.ExplicitCapture);//MatchEvaluator委托定义将setence开始替换为大写varresult=r.Replace(lowerCase,s=>s.Value.ToUpper());//结果是:“这是一组。未大写的字母。”这可以通过多种不同的方式进行改进,以更好地匹配更广泛的句型(而不仅仅是那些以字母+句点结尾的句型)。这对我有用。//////将字符串转换为句子大小写。//////要转换的字符串。///AstringpublicstaticstringSentenceCase(stringinput){if(input.Length内置的ToTitleCase函数,未来会扩展支持多文化。http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx我在MSDN上找到了这个sample,如果你输入的字符串不是一个句子,而是很多个句子,这就成了一个非常难的问题。正则表达式将被证明是一种非常有价值的工具,但是(1)您必须非常了解它们才能发挥作用,并且(2)它们可能无法独立完成这项工作。考虑一下“谁是第一”这句话,史密斯先生没有笑,他回答道。这个句子不是以字母开头,它有一个数字、各种标点符号、一个专有名称和一个.在中间。复杂性是巨大的,这是一个词。使用RegEx时最重要的事情之一就是“了解你的数据”。如果您知道要处理的句子类型的广度,您的任务将更易于管理。在任何情况下,您都必须使用您的实现,直到您对结果感到满意为止。我建议使用一些示例输入编写一些自动化测试-在您处理实现时,您可以定期运行测试以查看您接近的地方以及您仍然缺少标记的地方。如果要检查包含标点符号而不仅仅是句点的字符串:stringinput="THISISYELLING!WHYAREWEYELLING?因为我们可以。这就是全部。";varsentenceRegex=newRegex(@"(^[az])|[?!.:,;]s+(.)",RegexOptions.ExplicitCapture);input=sentenceRegex.Replace(input.ToLower(),s=>s.Value.ToUpper());这是我使用的(VB.NET)。它适用于大多数情况,包括:但至于专有名词和首字母缩略词,嗯……英语中总会有标点符号不那么简单的情况。例如,此脚本不会检测省略号(“...”)或缩写(例如:“Mr.JoneslivesonMagnoliaBlvd.nearChris'shome.”)。要完全解决这个问题,您需要为该语言生成所有可能的缩写/标点符号的字典,并使字典保持最新!考虑到这一点,大多数人会对妥协感到满意,否则就使用MicrosoftWord。以上就是《C#学习教程:.NET字符串转句型方法》的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注---publicstringGetSentenceCase(stringReqdString){stringStrInSentCase="";for(intj=0;j本文采集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处: