是否可以在Xamarin.Forms中将字符串转换为标题大小写?

所以在我的程序中我有一个这样的Entry

  

这与财产有关。

我在Xamarin UWP库中找到了这个System.Globalization.TextInfo.ToTitleCase ,但我正在寻找适用于所有平台的通用解决方案

是否有一个算法可以应用于我的字符串,以便在更改时将Title Case应用于字符串?

我在以下链接找到了一个很好的解决方案:

https://www.codeproject.com/Tips/1004964/Title-Case-in-VB-net-or-Csharp

这个解决方案关注首字母大写和逃避单词,例如,a,in

 public static class StringExtensions { public static string ToTitleCase(this string s) { var upperCase = s.ToUpper(); var words = upperCase.Split(' '); var minorWords = new String[] {"ON", "IN", "AT", "OFF", "WITH", "TO", "AS", "BY",//prepositions "THE", "A", "OTHER", "ANOTHER",//articles "AND", "BUT", "ALSO", "ELSE", "FOR", "IF"};//conjunctions var acronyms = new String[] {"UK", "USA", "US",//countries "BBC",//TV stations "TV"};//others //The first word. //The first letter of the first word is always capital. if (acronyms.Contains(words[0])) { words[0] = words[0].ToUpper(); } else { words[0] = words[0].ToPascalCase(); } //The rest words. for (int i = 0; i < words.Length; i++) { if (minorWords.Contains(words[i])) { words[i] = words[i].ToLower(); } else if (acronyms.Contains(words[i])) { words[i] = words[i].ToUpper(); } else { words[i] = words[i].ToPascalCase(); } } return string.Join(" ", words); } public static string ToPascalCase(this string s) { if (!string.IsNullOrEmpty(s)) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); } else { return String.Empty; } } } 

您可以使用Linq分割所有单词并将首字母大写,如下所示:

 string input = "test of title case"; string output=String.Join(" ",input.Split(' ') .ToList() .Select(x => x = x.First().ToString().ToUpper() + x.Substring(1))); 

为了使其工作,单词的分隔符必须始终是空格,它不能用逗号,句点等…

你可以用它

 public static string ToTitle(this string data) { if (!string.IsNullOrEmpty(data)) { TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; return string.Format(textInfo.ToTitleCase(data.ToLower())); } return data; } 

用法:

 string test = "hello there"; test.ToTitle();