如何将textBox中的每个字符串转换为字符串

本文关键字:字符串 转换 textBox | 更新日期: 2023-09-27 18:20:46

我在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中,我看到一个长字符串中的所有单词,如:

丹尼,你好,这个

单词之间根本没有空格。我需要将它添加到textBox2中,并使用它在textBox1中的确切空格。

如果在textBox1中,例如:

丹尼你好你好是的2-4

moses daniel    yellow

因此,在文本框2中,它应该是同一行:

丹尼你好你好是的2-4

moses daniel    yellow

有同样的空间,有两条线,什么都有。

两个问题:

  1. textBox2 中没有空格

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

例如,如果我在textBox1:hi daniel 中输入

所以在textBox2中应该是:daniel没有字:嗨

或者如果在textBox1中是:daniel嗨你好因此,在textBox2中,它将是:daniel hello

如何将textBox中的每个字符串转换为字符串

为什么不将它们分开并单独处理呢?例如:

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之前对其进行操作。

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;
}

快速简单:

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;
}

尝试如下操作:

String str=TextBox1.Text;
String[] tokens = str.split(" ");
for(int i=0;i<tokens.length();i++)
{
  String retVal = tokens[i];
}
TextBox2.Text=retVal;

您可以对C#使用getline或readline,它将获取文本框中的整行,然后将其存储在临时变量中。