2016-10-19 5 views
0

文字列があります。私は平らでない空白に文字列を分割したい。空白の長さが2スペースの長さよりも大きいか等しい場合は、それらを別の配列アイテムに入れたいのですが、空白が1つしかない場合は、同じ配列アイテムに入れたいと思います。2つ以上の空白を含む文字列を分割する

私は上記の文字列を分割するときに、それは以下の文字列を使用して、この

arr(0) = 1234 
arr(1) = This is a test ' because it has only one space in between, it  there are more or equal to two spaces than I want it to be a seperate item in an array 
arr(2) = Pass 
arr(3) = 1255432 
arr(4) = 12/21/2016 
arr(5) = 07:14:1 

同じことのようにする必要があり、この文字列

1234 This is a Test      PASS   1255432    12/21/2016 07:14:11 

を持っている:

0001 This is a Marketing text_for the students  TEST2    468899       12/23/2016 06:23:16 

I上記の文字列を分割すると、次のようになります。

arr(0)=0001 
arr(1) = This is a Marketing text_for the students 
arr(2) = Test2 
arr(3)=468899 
arr(4)=12/23/2016 
arr(5) = 06:23:16 

私はスペースに基づいて文字列を分割するのに役立ちますが、スペースがよりか等しい2

にすべてのヘルプは大歓迎されている場合は一緒に単語を置くことができる任意の正規表現があります。

+1

'@ '\ s {2、}' 'で分割します –

+0

このようにして、多くの配列項目は空になります。私は上記のようなものを得ることができます – Anjali5

+0

あなたは確かにそれを試したことはありません。 https://regex101.com/r/7aBvcg/1 –

答えて

0

これはそうのような+(\ sの{0,1}の\ S +)がこの正規表現で行うことができます。

  string text = "0001 This is a Marketing text_for the students  TEST2    468899       12/23/2016 06:23:16"; 
      Regex regex = new Regex(@"(\s{0,1}\S+)+"); 

      var matches = regex.Matches("0001 This is a Marketing text_for the students  TEST2    468899       12/23/2016 06:23:16").Cast<Match>() 
            .Select(m => m.Value) 
             .ToArray(); 

      Console.WriteLine(String.Join(",", matches)); 

これは同じものの作業Javaスクリプトのスニペットです。

var value = "0001 This is a Marketing text_for the students  TEST2    468899       12/23/2016 06:23:16"; 
 
var matches = value.match(
 
    new RegExp("(\\s{0,1}\\S+)+", "gi") 
 
); 
 
console.log(matches)

\ sの{0,1}とそれぞれ一致の物乞いし、\ Sとスペース+ことはない物事の任意の数で、0または1スペースを照合することによって動作(\s{0,1}\S+)+この正規表現+演算子(...)+を使用することで、この全体を何回でもマッチさせることができます。これにより、文字列を単一のスペース文字でまとめることができます。

関連する問題