it-swarm-ja.tech

文字列を行末として「\ n \ r」を追加する複数行のTextBoxからList <string>に分割する方法は?

XAMLファイルにテキストボックスがあります。

_<TextBox 
             VerticalScrollBarVisibility="Visible" 
             AcceptsReturn="True" 
             Width="400" 
             Height="100" 
             Margin="0 0 0 10" 
             Text="{Binding ItemTypeDefinitionScript}"
             HorizontalAlignment="Left"/>
_

CreateTable(string)に送信する文字列を取得し、CreateTable(List<string>)を呼び出します。

_public override void CreateTable(string itemTypeDefinitionScript)
{
    CreateTable(itemTypeDefinitionScript.Split(Environment.NewLine.ToCharArray()).ToList<string>());
}

public override void CreateTable(List<string> itemTypeDefinitionArray)
{
    Console.WriteLine("test: " + String.Join("|", itemTypeDefinitionArray.ToArray()));
}
_

問題は、文字列の各行の終わりに明らかに '\ n\r'があるため、Split( '\ n')はSplit( '\ r')と同様にそれらの1つだけを取得し、Environment.Newline.ToCharArrayを使用することです。 ()これを入力すると:

_one
two
three
_

これを生成します:

_one||two||three
_

もちろん、これを作成したいのですが。

_one|two|three
_

「_\n\r_」で終わる文字列を_List<string>_に単純に解析するためのワンライナーとは何ですか?

24
Edward Tanguay

このような何かがうまくいくかもしれません:

string input = "line 1\r\nline 2\r\n";
List<string> list = new List<string>(
                           input.Split(new string[] { "\r\n" }, 
                           StringSplitOptions.RemoveEmptyEntries));

置換"\r\n"ニーズに適した区切り文字列を使用します。

41
Fredrik Mörk

これを試して:

List<string> list = new List<string>(Regex.Split(input, Environment.NewLine));
14
Rubens Farias

string.Splitstring[]セパレータとして:

itemTypeDefinitionScript.Split(new [] { Environment.NewLine }, 
                               StringSplitOptions.RemoveEmptyEntries);
8
bruno conde

マイナー追加:

List<string> list = new List<string>(
                           input.Split(new string[] { "\r\n", "\n" }, 
                           StringSplitOptions.None));

「\ r」なしでケースをキャッチします(私は古代のFORTRAN FIFOコード...からのそのような例をたくさん持っています)。行を捨てません。

5
SAL