2013-11-03 42 views
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页

这是我的新Page 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]); 
    } 

回答

9

你的错误是线;

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

Obviusly,--------不是单个字符。这是一个字符串。使用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 
+0

声明必须是'string []'。我知道这是错字,但.. –

+0

@SriramSakthivel UPS错过了。谢谢。更新。 –

+0

以及如何获得page1第2页? – user2835256

2

的问题是,你需要使用string[]过载:

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

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

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

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