C# 如何检查文本框内容中是否有空格?
我有以下代码:C# 如何检查文本框内容中是否有空格?,c#,winforms,textbox,C#,Winforms,Textbox,我有以下代码: private void BtnScrambleText_Click(object sender, EventArgs e) { textBox1.Enabled = false; BtnScrambleText.Enabled = false; StringBuilder sb = new StringBuilder(); var words = textBox1.
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());
}
假设danny在textBox1
中从一开始就用了7个空格,daniel和hello之间还有5个空格
在我的代码中,我做到了:
if (string.IsNullOrEmpty(words[i]))
{
sb.Append(words[i]);
}
但这永远不会发生,这是不对的。
我想检查文本框中的单词前后是否有空格,将空格添加到sb变量中
因此,最后textBox2
内容将与textBox1
中的内容相同,单词之间的空格数相同
现在textBox2
看起来像一个长的一串单词,中间没有空格
我的问题是如何在
textBox1
中的单词之间添加相同的空格?这句话绝对没有用:
if (string.IsNullOrEmpty(words[i]))
{
sb.Append(words[i]);
}
您似乎需要这样的东西(未经测试):
private void BtnScrambleText\u单击(对象发送方,事件参数e)
{
textBox1.Enabled=false;
BtnScrambleText.Enabled=false;
StringBuilder sb=新的StringBuilder();
var words=Regex.Split(textBox1.Text,@“(?=(?此语句绝对无用:
if (string.IsNullOrEmpty(words[i]))
{
sb.Append(words[i]);
}
您似乎需要这样的东西(未经测试):
private void BtnScrambleText\u单击(对象发送方,事件参数e)
{
textBox1.Enabled=false;
BtnScrambleText.Enabled=false;
StringBuilder sb=新的StringBuilder();
var words=Regex.Split(textBox1.Text,@)(?=(?我简化了您的代码,但您会发现在您的情况下应用它很容易。问题在于,在执行拆分时,您会丢失空格,并且它们不会被重新添加。解决方法是使用“String.Join”当您完成字符串集合时。在这种情况下,因为您知道输出大小与输入大小相同,所以我看不出有任何理由使用stringbuilder。只需使用您根据输入大小调整大小的数组即可
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);
string inputText=“这是一个测试”;
var words=inputText.Split(新字符[]{''});
var outputWords=新字符串[words.Length];
for(int i=0;i
我稍微简化了您的代码,但您应该会发现在您的情况下应用它很容易。问题在于,您在执行拆分时丢失了空格,并且没有将它们重新添加。解决方法是使用“String.Join”当您完成字符串集合时。在这种情况下,因为您知道输出大小与输入大小相同,所以我看不出有任何理由使用stringbuilder。只需使用您根据输入大小调整大小的数组即可
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);
string inputText=“这是一个测试”;
var words=inputText.Split(新字符[]{''});
var outputWords=新字符串[words.Length];
for(int i=0;i
这是一个简单的表单
string text=mytextbox.Text;
while(text.Contains(" ")) //while two spaces
text=text.Replace(" "," "); //remove two spaces
这是简单的形式
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);
如果我没弄错的话,你的问题是在被打乱的单词之间保留确切的空格数
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);
如果将文本框内容保存到变量中,也会存储空格,因此将其分配给textbox1不会有问题。如果希望两个文本框中的内容相同,那么为什么不执行此操作textbox2.text=textbox1.text
?foreach(textbox1.text中的变量c){…}
如果c
不是一个字符,只需将其添加到sb
。如果是,则在一个单独的变量中“收集”它和所有即将出现的字符,直到到达下一个非字符。然后将收集的字符置乱并添加到sb
。(假设您希望第二个文本框与第一个文本框具有完全相同的字符串,但每个单词都有随机字符)如果将文本框内容保存到变量中,也会存储空格,因此将其分配给textbox1不会有问题。如果希望两个文本框中的内容相同,那么为什么不执行此操作textbox2.text=textbox1.text
?foreach(textbox1.text中的变量c){…}
如果c
不是一个字符,只需将其添加到sb
。如果是,则在一个单独的变量中“收集”它和所有即将出现的字符,直到到达下一个非字符。然后将收集的字符置乱并添加到sb
。(假设您希望第二个文本框与第一个文本框具有完全相同的字符串,但每个单词都有随机字符)Andrey你的代码示例只是在textBox2中的每个单词之间添加一个空格。但是我想在单词之间添加相同数量的空格,就像在textBox1中一样。如果在textBox1中,两个单词之间的内容中有7个空格,那么它也应该在textBox2中,没有一个空格,只有7个!Andrey你的代码示例只是添加一个空格textBox2中每个单词之间的空格。但是我想在单词之间添加相同数量的空格,就像textBox1中一样。如果在textBox1中,两个单词之间的内容中有7个空格,那么它应该在两个单词之间,也在textBox2中,没有一个空格,只有7个!是的,你知道这个问题了。好的,首先在w行中有两个错误对于StringSplitOptions,我得到错误错误2参数2:无法在新类ScrambleTextBoxText scrmbltb=new ScrambleTextBoxText(字[i])的实例中从'System.StringSplitOptions'转换为'char'和second;