有没有简单的方法来将语法套管应用于字符串?
问题描述:
我开发上UWP
有没有简单的方法来将语法套管应用于字符串?
一个Xamarin.Forms
应用我有一个Editor
控制 - 基本上是一个多线TextBox
我想一些简单的语法套管适用于字符串基本如下:
- 首字母大写“I”
- 首字母大写
- Capitali塞满了第一个词。
我设法做了前两个,并且有点卡在第三个,并想知道是否有一个更简单的方法,或者我的算法是否可以适应。
我至今是:
public static string ToGramaticalCase(this string s)
{
var thingsToCapitalise = new String[] {"i"};
string newString = string.Empty;
if (!string.IsNullOrEmpty(s))
{
var wordSplit = s.Split(' ');
if (wordSplit.Count() > 1)
{
var wordToCapitalise = wordSplit.First();
wordToCapitalise = wordToCapitalise.Substring(0, 1).ToUpper() + wordToCapitalise.Substring(1);
var value = wordToCapitalise + s.Substring(wordToCapitalise.Length);
foreach (var item in thingsToCapitalise)
{
value = value.Replace(string.Format(" {0} ", item), string.Format(" {0} ", item.ToUpper()));
}
newString = value;
}
}
return newString;
}
答
此方法将大写后面的所有单词。 “:
[Test]
public void Test()
{
var result = NewSentenceWithUpperLetter("Sentence one. sentence two.");
// result will be 'Sentence one. Sentence two.'
}
private string NewSentenceWithUpperLetter(string text)
{
var splitted = text.Split(' ');
for (var i = 1; i < splitted.Length; i++)
{
if (splitted[i - 1].EndsWith("."))
{
splitted[i] = splitted[i][0].ToString().ToUpper() + splitted[i].Substring(1);
}
}
return string.Join(" ", splitted);
}
答
也仅仅是分割字符串的句号。改变这一行:
var wordSplit = s.Split(' ');
进入这个:
var wordSplit = s.Split(new char[] { ' ', '.' },StringSplitOptions.RemoveEmptyEntries);
编辑
该扩展方法会做你想要什么:
public static string ToTitleCase(this string input)
{
string output =
String.Join(" ", input.Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries)
.ToList()
.Select(x => x = x.Length>1?
x.First().ToString().ToUpper() + x.Substring(1):
x.First().ToString().ToUpper()));
output =
String.Join(".", output.Split(new char[] { '.' },StringSplitOptions.RemoveEmptyEntries)
.ToList()
.Select(x => x = x.Length > 1 ?
x.First().ToString().ToUpper() + x.Substring(1) :
x.First().ToString().ToUpper()));
return output;
}
测试字符串:string input = "i try this test sentence .now it works as i want";
输出:I Try This Test Sentence .Now It Works As I Want
不知道如果这样做你想要的一切,但是你看看[Humanizer(https://github.com/Humanizr/Humanizer) –