如何检查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
中的单词之间添加相同的空格?
我稍微简化了您的代码,但您应该会发现它很容易应用于您的情况。这个问题来自于这样一个事实:当你进行拆分时,你会丢失空间,而这些空间没有被添加回来。解决方案是在你完成字符串集合时使用"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);