2

私のコードの文字列値は次のようになります:

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

私はそれを次のように分割したい:

ページ1

これは私の新しい Page1 です

ページ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]);
   }
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[] { "     --------     ", ":"};

page1 ページ 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は 1 文字として定義されます。したがって、これを行うと、' -------- 'それを構築できません。それは ではありません、それcharstringです。率直に言って、それはあなたが探しているものです。

したがって、 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 に答える