2016-07-20 4 views
2

テキストのブロックを2次元配列に分割しようとしています。私は行を単語の配列に分割する方法を知っており、複数の行を行の配列に分割する方法を知っていますが、同時に両方を実行したいと思います。テキストを2次元配列に分割する

ティム

((ティムは、ある、素敵な)、(ジムになる素敵な
ジムは平均である:

は例えば、私はこれが欲しいです、is、mean))

S Oファー、私はに例の文字列を作るために

Str1.Split(new String() {Environment.NewLine}, StringSplitOptions.None) 

を使用することができました:

(ティムがいいです、ジムは平均値である)そして、私はStr1.Splitを使用しました"Tim is nice"

に変換する(ティムは、いいです)

また、自分のコードのいずれかが間違っているとか、私に知らせるようなものがあれば、私は主にPythonプログラマーです。

+0

/それがあることを意味されますか?それは長いテキストで改行文字を持っていますか? – Plutonix

+0

@Plutonix改行文字で文字列変数に格納されます。 Str1.Split(new String(){Environment.NewLine}、StringSplitOptions.None) – computhomas

+0

開始点を知るために、質問([Edit])に追加してください。 – Plutonix

答えて

2

これは、2Dアレイイマイチ:

を((ティム)、いいです、(ジムは)、平均値である)

ジャグ配列または配列の配列であること。各行/文は同じ数の単語を持たないかもしれないので、より良い選択です。あなたの例では、それぞれの "行"を保持する2の配列を持ちますが、それらの配列のそれぞれには多くの単語が配列されています。

Dim original = "Tim is nice" & Environment.NewLine & "Jim is very mean" 

Dim lines = original.Split(New String() {Environment.NewLine.ToString}, 
          StringSplitOptions.RemoveEmptyEntries) 

Dim results(lines.Count - 1)() As String 
For n As Int32 = 0 To lines.Count - 1 
    ' store array of words to results(n) 
    results(n) = lines(n).Split(" "c) 
Next 
' glue a line back together and show it 
Console.WriteLine(String.Join(" ", results(1))) 

results(0)は、ティム・ワードを保持するresults(1)はジム・ワードを保持します。 (WriteLineメソッドの)結果:

ジムは非常に

最初のブロックが格納されてどのように
+0

結果(0,2)は "いい"でしょうか?また、Count関数とLength関数の違いは何ですか? – computhomas

+0

'results(0,2)'は2D配列の場合に動作し、 'results(0)(2)'は '' nice "'になります。 LengthとCountの間に実際の違いはありません。 Countは、配列のrefが構文的に他のモダンなコレクションと一致するようにする拡張メソッドです。 – Plutonix

+0

ありがとう、これは私が探していたものです。副次的なこととして、私が作業しているデータは、常に各行に同じ量の単語を持ちます。ギザギザの代わりに2次元アレイを使用するためのアドバンテージがありますか? – computhomas

関連する問題