如何检查textBox内容中是否有空格

本文关键字:是否 空格 textBox 何检查 检查 | 更新日期: 2023-09-27 18:20:52

我有这个代码:

private void BtnScrambleText_Click(object sender, EventArgs e)
        {
            textBox1.Enabled = false;
            BtnScrambleText.Enabled = false;
            StringBuilder sb = new StringBuilder();
            var words = textBox1.Text.Split(new char[] { ' ' });
            for (int i = 0; i < words.Length; i++)
            {
                if (string.IsNullOrEmpty(words[i]))
                {
                    sb.Append(words[i]);
                }
                else
                {
                    ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(words[i]);
                    scrmbltb.GetText();
                    sb.Append(scrmbltb.scrambledWord);
                }
            }
            textBox2.AppendText(sb.ToString());
        }

例如,在textBox1中,我确实按了7次空格键,然后键入了一些单词,然后又键入了5个空格和一个单词:

danny hi hello daniel     hello

假设danny在textBox1中从一开始就在7个空格之后,在daniel和hello之间还有5个空格。

在我的代码中,我做到了:

if (string.IsNullOrEmpty(words[i]))
{
    sb.Append(words[i]);
}

但这永远不会发生,这是不对的。我想检查一下,如果textBox中的单词前后有空格,请将空格添加到sb变量中。

因此,最终textBox2的内容将与textBox1中的内容相同,单词之间的空格数相同。

现在textBox2看起来像一个长的单词串,它们之间没有任何空格。

我的问题是如何在textBox1中的单词之间添加相同的空格?

如何检查textBox内容中是否有空格

我稍微简化了您的代码,但您应该会发现它很容易应用于您的情况。这个问题来自于这样一个事实:当你进行拆分时,你会丢失空间,而这些空间没有被添加回来。解决方案是在你完成字符串集合时使用"String.Join"。在这种情况下,由于您知道输出大小与输入大小相同,因此我认为没有任何理由使用字符串生成器。只需使用一个根据输入大小调整的数组。

string inputText = "This is a test";
        var words = inputText.Split(new char[] { ' ' });
        var outputWords = new string[words.Length];
        for (int i = 0; i < words.Length; i++)
        {
            if (string.IsNullOrEmpty(words[i]))
            {
                outputWords[i] = words[i];
            }
            else
            {
                outputWords[i] = Scramble(words[i]);
            }
        }
        string outputText = string.Join(" ",outputWords);

这句话毫无用处:

if (string.IsNullOrEmpty(words[i]))
{
    sb.Append(words[i]);
}

你似乎需要这样的东西(未测试):

private void BtnScrambleText_Click(object sender, EventArgs e)
{
    textBox1.Enabled = false;
    BtnScrambleText.Enabled = false;
    StringBuilder sb = new StringBuilder();
    var words = Regex.Split(textBox1.Text, @"(?=(?<=[^'s])'s+)");
    foreach (string word  in words)
    {
        ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(word.Trim());
        scrmbltb.GetText();
        sb.Append(word.Replace(word.Trim(), scrmbltb.scrambledWord));
    }
    textBox2.AppendText(sb.ToString());
}

CCD_ 7在保留空格的情况下对输入字符串进行拆分。

这是一种简单的形式

string text=mytextbox.Text;
while(text.Contains("  ")) //while two spaces
  text=text.Replace("  "," "); //remove two spaces

如果我做对了,你的问题是在随后加扰的单词之间保持确切的空格数。

var words = string.Split(new char[]{' '}, StringSplitOptions.None); // this keeps the spaces as "epmty words"
var scrambled = words.Select(w => { if (String.IsNullOrEmpty(w))
                                          return w;
                                    else {
                                         ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(w);
                                         scrmbltb.GetText();
                                         return scrmbltb.scrambledWord;
                                    }
                                  });
var result = string.Join(" ", scrambled);