我想将字符串中每个句子的第一个字母大写。 我有一个字符串,例如。 “你好,你好吗? 我很好,你呢? 我很好。好天气!“
我希望将每个句子的第一个字母大写。所以, “你好,你好吗? 我很好,你呢?“ 等
编辑:到目前为止,我刚试过
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + input.Substring(1);
}
但是这会将每个词中的第一个字母大写,而不是句子:/
答案 0 :(得分:6)
我建议简单的方法,迭代字符串。
您也可以将其作为string
的扩展名。
public static class StringExtension
{
public static string CapitalizeFirst(this string s)
{
bool IsNewSentense = true;
var result = new StringBuilder(s.Length);
for (int i = 0; i < s.Length; i++)
{
if (IsNewSentense && char.IsLetter(s[i]))
{
result.Append (char.ToUpper (s[i]));
IsNewSentense = false;
}
else
result.Append (s[i]);
if (s[i] == '!' || s[i] == '?' || s[i] == '.')
{
IsNewSentense = true;
}
}
return result.ToString();
}
}
因此,您可以按照以下方式使用
string str = "hello, how are you? i'm fine, you? i'm good. nice weather!".CapitalizeFirst();
所以str
等于
你好,你好吗?我很好,你呢?我很好。天气不错!
答案 1 :(得分:0)
迭代字符串:创建一个包含停止字符的列表。
然后检查该字符串中的每个字母,如果它在列表中。如果它在列表中,则在此之后将字符大写。
对于第一个字符,它总是大写,你应该静态。
或者,你可以像丹说的那样做,它也有效。
答案 2 :(得分:0)
Microsoft Outlook 2010提供了将所选文本格式化为句子大小写的选项,请转到格式化文本选项卡 - 字体组,您会在缩小字体选项旁边找到一个更改大小写选项,切换长话短说,您需要类似的东西在你的代码中,不幸的是,在.net中没有定义内置属性。
但请查看堆栈溢出中已经发生的对话。 .NET method to convert a string to sentence case
答案 3 :(得分:0)
您需要一个名为txtInput
的文本框和另一个名为txtOutput
的文本框。然后运行此代码,例如按下按钮:
bool Upper = true;
foreach(char c in txtInput.Text)
{
if (Upper == true)
{
if (c == ' ')
{
txtOutput.Text += c;
continue;
}
txtOutput.Text += c.ToString().ToUpper();
Upper = false;
}
else
{
txtOutput.Text += c;
}
if (c == '?' || c == '!' || c == '.')
Upper = true;
}
屏幕截图: