如何将每个字符串从textBox转换为字符串?

时间:2013-07-02 12:38:05

标签: c# .net winforms

我试图在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

相同的空格有两条线和一切。

两个问题:

  1. textBox2中没有空格

  2. 它在textBox2中添加了我在textBox1中输入的任何单词,但它只应添加从我的新类返回的单词:scrmbltb.scrambledWord

  3. 例如,如果我输入textBox1:hi daniel

    所以在textBox2中它应该是:daniel 没有这个词:嗨

    或者如果在textBox1中它是:daniel你好 所以在textBox2中它将是:daniel hello

5 个答案:

答案 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,它将在文本框中获取整行,然后将其存储在临时变量中。