2016-05-26 8 views
1

私は文字列にseperated by comma or by spaceという3つの数字を含んでいます。例えば、"3,3,3" or "3 3 3"2進数の配列をいくつかのコード行に変換するC#

文字列には、数字の間または文字列の先頭と末尾にもスペースを入れることができます。

私はinsert them into arrayになりたいです。

は私がやった:

this.ang[0] = Convert.ToDouble(ang.Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)[0]); 
this.ang[1] = Convert.ToDouble(ang.Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)[1]); 
this.ang[2] = Convert.ToDouble(ang.Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)[2]); 

にはどうすれば少ないコード行と列にデータを挿入することができますか?

ありがとうございます!

+0

。 –

+0

@Sylveracどのようにしてループなしでやっている? – Programmer

+0

ありがとう@JohnnyMoppこれは私の問題を解決する – Programmer

答えて

1

String.Split()方法は、既に配列を返しますので、あなたがあなたの分割を行い、doubleとして各値を解析し、これらの値を格納するためにLINQのSelect()メソッドを使用することができます配列:

// This will store the double value for each of your elements into an array 
this.ang = ang.Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
        .Select(x => Convert.ToDouble(x)) 
        .ToArray(); 

あなたが明示的にあなたのthis.ang配列を設定することができない場合は、あなたが変数の前の結果を格納し、個別に設定するためにそれを使用することができます必要に応じて値を入力します。

あなたはsee a working example of this in action hereをすることができます。

1

あなたはのLINQを使用してみてください:

String ang = "3,3,3"; 

double[] result = ang 
    .Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
    .Select(item => Convert.ToDouble(item)) 
    .ToArray(); 
0

すでに提案されている回答は、配列全体を再割り当てできるとします。ang。あなたができない場合は、反復のために通過する必要があります。

var splitString = ang 
    .Trim() 
    .Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) 

for(int i = 0; i < 3; i++) 
{ 
    this.ang[i] = Convert.ToDouble(splitString[i]); 
} 
+0

* 'i <3'のマジック値*' 3'は醜いです。 '私

+0

確かに。たぶん将来、 'ang'は5倍または10,000倍の2倍を持つでしょう。多分、' public const int ANG_LENGHT = 3'のような定数をさらに一般化することができます。 –

0
var ang = "3,3,3"; // or "3 3 3"; 
var res = ang.Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
        .Select(x => Convert.ToDouble(x)) 
        .ToList(); 
メソッドに変換ロジックを移動し、配列を移入するために、 `for`または` foreach`ループを使用し
関連する問題