2

我的代码中的字符串值如下:

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页

这是我的新页面3

我写了这段代码,但它说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]);
   }
4

3 回答 3

9

你的错误是那一行;

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
于 2013-11-03T12:05:54.093 回答
2

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

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

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

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

于 2013-11-03T12:07:18.650 回答
0

只是为了记录。这是使用正则表达式的另一个选项:

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);
}
于 2013-11-03T16:38:33.950 回答