我试图在Form1中这样做:
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[] { ' ' });
foreach (var w in words)
{
if (w == " ")
{
sb.Append(w);
continue;
}
ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(w);
scrmbltb.GetText();
sb.Append(scrmbltb.scrambledWord);
textBox2.AppendText(sb.ToString());
}
}
我所拥有的新类是ScrambleTextBoxText,我只是从textBox1获取一个单词,然后将乱码字添加回textBox2
但是在textBox2中,我看到一个长字符串中的所有单词,如:
dannyhihellobyethis
单词之间根本没有空格。 我需要它添加到textBox2,其中包含textBox1中的确切空格。
如果在textBox1中,那就是:
丹尼你好你好两四个
moses daniel yellow
所以在textBox2中它应该是同一行:
丹尼你好你好两四个
moses daniel yellow
相同的空格有两条线和一切。
两个问题:
textBox2中没有空格
它在textBox2中添加了我在textBox1中输入的任何单词,但它只应添加从我的新类返回的单词:scrmbltb.scrambledWord
例如,如果我输入textBox1:hi daniel
所以在textBox2中它应该是:daniel 没有这个词:嗨
或者如果在textBox1中它是:daniel你好 所以在textBox2中它将是:daniel hello
答案 0 :(得分:4)
为什么不分开它们并单独使用它?例如:
StringBuilder sb = new StringBuilder();
var words = textBox1.Text.Split(new char[] { ' ' });
foreach (var w in words)
{
if (string.IsNullOrEmpty(w))
{
sb.Append(w);
continue;
}
// do something with w
sb.Append(w);
}
此算法将保留所有空格,但允许您在追加w
之前对其进行操作。
答案 1 :(得分:1)
快速而简单:
string text = textBox1.Text;
string[] words = text.Split(new string[] { }, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
{
textBox2.Text += " " + ChangeWord(word);
}
如果你不喜欢领先的空间:
textBox2.Text = textBox2.Text.Trim();
修改强>
我只是注意到你想改变ad-hoc这个词。在这种情况下,请参阅上面的更改并添加:
private string ChangeWord(string word)
{
// Do something to the word
return word;
}
答案 2 :(得分:1)
var str = textbox1.Text.split(' ');
string[] ignoreChars = new string[] { ",", "." };
foreach(string t in str)
{
if(!ignoreChars.Contains(t)) //by this way, we are skipping the stuff you want to do to the words
{
if(!int.TryParse(t)) // same here
{
//dosomething to t
// t = t + "asd";
}
}
textBox2.Text += " " + t;
}
答案 3 :(得分:0)
尝试按以下步骤操作:
String str=TextBox1.Text;
String[] tokens = str.split(" ");
for(int i=0;i<tokens.length();i++)
{
String retVal = tokens[i];
}
TextBox2.Text=retVal;
答案 4 :(得分:0)
您可以对C#使用getline或readline,它将在文本框中获取整行,然后将其存储在临时变量中。