【问题标题】:Displaying all of the array past certain amount显示超过一定数量的所有数组
【发布时间】:2012-09-14 21:09:50
【问题描述】:
    Text = textBox.Text;

    if (Text.StartsWith("!say"))
    {
        string[] CurrentText = Text.Trim().Split(' ');
        label1.Text = CurrentText[1];
        label2.Text = CurrentText[2] += CurrentText[3];
    }

我已经做了很多搜索,这可能很容易,但我找不到任何东西,但我希望将 CurrentText[2] 之后的任何内容放到 label2.Text 上,而不仅仅是第二个和第三个,是否存在无论如何要这样做?另外,我怎样才能在两者之间保留空格(例如,如果我输入 "!say Hello Hello World!" 会显示为

  label1 = Hello  

  label2 = Hello World!    

有空格。

【问题讨论】:

    标签: c# arrays split


    【解决方案1】:

    试试

    label2.Text = String.Join(" ", CurrentText.Skip(2).ToArray());
    

    由于数组索引从零开始,CurrentText[0]CurrentText[1] 必须被跳过。

    【讨论】:

      【解决方案2】:

      如果你只需要关心第一个“”,为什么不使用这个:

      int index = Text.IndexOf(" ");
      
      label1.Text = text.Substring(0, index);
      label2.Text = text.Substring(index + 1);
      

      【讨论】:

      • 你的第一个子字符串应该使用index-1,不是吗?
      • @DStanley:既不是-1也不是+1,没有什么是正确的答案:-)。现已修复,谢谢。
      • 关闭,但是用户可以输入的内容必须是随机的。例如 !say helloworld 会将 helloworld 作为 label1,而 hello 会将 hello 作为 label1。你的放 !say 如果你把它改成 5,它会把 Hello 放进盒子里,但仅此而已。
      【解决方案3】:

      文本 = textBox.Text;

      if (Text.StartsWith("!say"))
      {
          string[] CurrentText = Text.Trim().Split(' ');
          label1.Text = CurrentText[1];
          label2.Text = string.Join(", ", CurrentText.Skip(2).ToArray());
      } 
      

      这会有所帮助。

      【讨论】:

        【解决方案4】:

        你是这个意思吗?

        label2.Text += string.Join(" ", CurrentText, 1, CurrentText.Length-1);
        

        对我来说,在这种情况下,Linq 似乎有点矫枉过正。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多