C#在字符串的每个句子中首字母大写

时间:2016-03-18 16:26:36

标签: c# string

我想将字符串中每个句子的第一个字母大写。 我有一个字符串,例如。 “你好,你好吗? 我很好,你呢? 我很好。好天气!“

我希望将每个句子的第一个字母大写。所以, “你好,你好吗? 我很好,你呢?“ 等

编辑:到目前为止,我刚试过

public static string FirstCharToUpper(string input)
        {
            if (String.IsNullOrEmpty(input))
                throw new ArgumentException("ARGH!");
            return input.First().ToString().ToUpper() + input.Substring(1);
        }

但是这会将每个中的第一个字母大写,而不是句子:/

4 个答案:

答案 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;


        }

屏幕截图:

screenshot