【问题标题】:Too many Literal Characters in c# WPFc#WPF中的文字字符太多
【发布时间】:2013-11-03 12:03:09
【问题描述】:

我的代码中的字符串值是这样的:

string abc = "Page1: This is my new Page1 -------- Page2: This is my new Page 2
-------- Page3: This is my new Page3 -------- "

我想像这样拆分它:

第1页

这是我的新页面1

第2页

这是我的新页面 2

第3页

这是我的新Page3

我写了这段代码,但上面写着There are two many Literals

 string value =  "Page1: This is my new Page1     --------     Page2: This is my new Page 2     --------     Page3: This is my new Page3     --------     ";


 char[] delimiters = new char[] { '    --------     ' };

 string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

 for (int i = 0; i < parts.Length; i++)
  {
     MesaageBox.Show(parts[i]);
  }

 parts = value.Split(new string[] { "\r\n" }, StringSplitOptions.None);

  for (int i = 0; i < parts.Length; i++)
   {
      MesaageBox.Show(parts[i]);
   }

【问题讨论】:

    标签: c# .net wpf split


    【解决方案1】:

    你的错误是那一行;

    char[] delimiters = new char[] { '    --------     ' };
    

    显然,-------- 不是单个字符。它是一个字符串。使用string 数组而不是char 数组之类的;

    string[] delimiters = new string[] { "    --------     " };
    

    完整示例;

    string value =  "Page1: This is my new Page1     --------     Page2: This is my new Page 2     --------     Page3: This is my new Page3     --------     ";
    string[] delimiters = new string[] { "     --------     " };
    string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
    
    foreach (var item in parts)
    {
        Console.WriteLine(item);
    }
    

    输出将是;

    Page1: This is my new Page1
    Page2: This is my new Page 2
    Page3: This is my new Page3
    

    这里是 demonstration

    如果你想输出喜欢;

    Page1
    This is my new Page1
    Page2
    This is my new Page 2
    Page3
    This is my new Page3 
    

    您只需在字符串数组中添加: 即可拆分部分。喜欢;

    string[] delimiters = new string[] { "     --------     ", ":"};
    

    以及如何获取第1页第2页?

    你可以得到他们喜欢;

    Console.WriteLine(delimiters[0]); //Prints Page1
    Console.WriteLine(delimiters[2]); //Prints Page2
    

    【讨论】:

    • @SriramSakthivel Ups 错过了这一点。谢谢。已更新。
    • 以及如何获取page1 page 2?
    • @user2835256 在我的回答中更新。
    • 谢谢@SonerGönül :)
    【解决方案2】:

    问题是你需要使用string[]重载:

    string[] delimiters = new string[] { "    --------     " };
    

    char 被定义为单个字符。所以,当你这样做' -------- ' 时,它无法构建它。那不是char,那是string。坦率地说,这就是你要找的。​​p>

    因此,通过将其从 char[] 更改为 string[],您将使用正确的重载。

    【讨论】:

      【解决方案3】:

      仅作记录。这是使用正则表达式的另一个选项:

      string value =  "Page1: This is my new Page1     --------     Page2: This is my new Page 2     --------     Page3: This is my new Page3     --------     ";
      string[] delimiters = new string[] { "     --------     " };
      string[] parts = Regex.Split(value, @"(?<=Page\d+): |\s+-{8}\s+");
      
      foreach (var item in parts)
      {
          Console.WriteLine(item);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 2017-06-21
        • 2021-01-27
        相关资源
        最近更新 更多