字符串方法剪切字符串部分

本文关键字:字符串部 方法 字符串 | 更新日期: 2023-09-27 18:33:42

我构建了一个字符串生成器,如果它是大写的,可以在文本中添加空格。输入的句子看起来像这样:"这是ASentence。由于它以大写字母开头,字符串生成器会将句子修改为如下所示:"这是一个句子。

我的问题是,如果我有一个像"thisIsASentence"这样的句子,字符串生成器会像平常一样将句子分开:"这是一个句子。

两个角色前面仍然有一个空格。

当句子贯穿这一行时:

result = result.Substring(1, 1).ToUpper() + result.Substring(2).ToLower();

如果输入的第一个字母是小写的,它将被切断,第二个字母变为大写。

该行旨在使输入的第一个字母保持大写,并将其余字母设置为小写。

在运行该行之前添加 trim 语句不会更改输出。

这是我现在的整体代码:

        private void btnChange_Click(object sender, EventArgs e)
    {   
        // New string named sentence, assigning the text input to sentence.
        string sentence;
        sentence = txtSentence.Text;
        // String builder to let us modify string
        StringBuilder sentenceSB = new StringBuilder();
        /*
         *  For every character in the string "sentence" if the character is uppercase,
         *  add a space before the letter,
         *  if it isn't, add nothing.
         */
        foreach (char c in sentence)
        {
            if (char.IsUpper(c))
            {
                sentenceSB.Append(" ");
            }
            sentenceSB.Append(c);
        }

        // Store the edited sentence into the "result" string
        string result = sentenceSB.ToString();
        // Starting at the 2nd spot and going 1, makes the first character capitalized
        // Starting at position 3 and going to end change them to lower case.
        result = result.Substring(1, 1).ToUpper() + result.Substring(2).ToLower();
        // set the label text to equal "result" and set it visible.
        lblChanged.Text = result.ToString();
        lblChanged.Visible = true;

字符串方法剪切字符串部分

当你使用"thisIsASentence"运行代码时,在你的foreach循环之后,结果将是"This Is A Sentence",因为它不会在开头插入空格。

然后

你的下一行,将采用索引 1 处的字符(这是这里的"h"),使其大写,然后附加字符串的其余部分,结果为"他的是一个句子"

要解决此问题,您可以在循环后执行result = result.Trim(),然后从索引 0 开始,使下一行result = result.Substring(0, 1).ToUpper() + result.Substring(1).ToLower();

使用 result.SubString(1,1) 时,您假设输入的第一个字母始终大写,因此您将始终在字符串的开头添加一个空格。您已经看到情况并非如此。

所以我基本上看到两个选项:

将该

行包装在 if 块中,该块在替换之前检查空格;

输入的第一个字母大写(如果您的规范允许)。