2016-11-23 8 views
-3

私は不思議ですが、.NET string.Empty.Split()は空白文字を含む1つのアイテムを返しますか?.NET string.Empty.Split()が空白文字を含む1つの項目を返すのはなぜですか?

+0

は、同様の質問かもしれませんhttp://stackoverflow.com/questions/2906621/undocumented- overload-of-string-split – Vladimir

+3

** **空の文字列を含む配列を返します。最初の項目にスペース文字はありません。なぜあなたはそこにいると思いますか?そこにスペースがあることを示す最初のアイテムのコンテンツを表示するために使用するツール/コードの種類は何ですか? –

+0

このオプションを 'StringSplitOptions.RemoveEmptyEntries'に渡すと、このスペースを取り除くことができます。 – Sherlock

答えて

0

string.Empty.Split()は、最初の位置に値string.Emptyを持つ文字列配列を返します。あなたは何を期待しますか?

追加情報:最初の一致前のすべてが最初の要素として返されます。一致するものがなければ、文字列自体が最初の位置に返されます。

+0

OK、分割と結合の組み合わせが私を混乱させました: ' '' var strings = string.Empty.Split(); '' ' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '') '' ' これはスペースを1つ前に付けます。しかし、それはどこから来ますか? –

+0

ああ、分割が何をしているのか分かっていれば、結合した文字列の先頭にスペースを入れることに驚いたことはありませんでした。 –

+0

あなたの質問に答えますか? –

1

あなたの声明で1つ小さな修正。 string.Empty.Split()は、空白文字を含む1つの項目を返しませんが、空の文字列を含む項目を返します。これは、split()メソッドが引数を持たない場合、空白を区切り文字とみなすためです。しかし、string.Emptyには空白もありません。したがって、出力配列の最初の項目でstring.Emptyを返すだけです。

0

あなたはSplit方法にseperatorsとして何も提供しない、それはuses whitespaces by default:あなたがstring.Empty.Split()を呼び出すとき

private unsafe int MakeSeparatorList(char[] separator, ref int[] sepList) { 
    ... 
    if (separator == null || separator.Length ==0) { 
     ... 
     // If they passed null or an empty string, look for whitespace. 

だから、あなたは空白文字でemtpy文字列を分割しようとしています。何もないので、このメソッドは文字列全体を唯一の結果として返します。正確"Hello!".Splitstring[] { "Hello!" }

0

を返します呼び出すようですsee

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("ehh \"" + string.Empty.Split()[0] + "\""); 
    } 
} 

戻っていません:

ehh "" 
関連する問題