2016-12-21 11 views
0

後の文字列を取得しますか?第二の空間

+2

すべての入力が同じ形式であるならば、なぜあなたは未@ ERROR' –

+0

'のインデックスを取ることによって、' .Substring() 'と試みをしません幸運は "@" 1024になる可能性があります警告何か何か何か... " – theonlygusti

+1

[第2空間](http://stackoverflow.com/questions/186653/c-sharp-indexof-the-nth-occurrence -of-a-string)、その後に部分文字列を取得します。あるいは誰かがおそらく正規表現に来ることができます。 – Martheen

答えて

3
string error = @"400 ERROR The second argument must be larger than the first."; 
var ind1 = error.IndexOf(' '); 
var ind2 = error.IndexOf(' ', ind1 + 1); 
var substring = error.Substring(ind2); 

これはさまざまなケースでどのように失敗する可能性がありますか。例えば、互いに背後に複数のスペースを有する。このメソッドを使用するとエラーが発生する可能性があります。

正規表現が最適です。

string error = @"400 ERROR The second argument must be larger than the first."; 
Regex regex = new Regex("^\\d+ *(ERROR|WARNING) *(?<Message>.*)$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); 
var message = regex.Match(error).Groups["Message"].ToString(); 

あなたはこの(ERROR|WARNING|HINT|etc)

+0

メッセージを文字列に変換するにはどうすればよいですか? 'ToString()'を呼び出すことによって – theonlygusti

+0

が編集されます。 btw 'Match'メソッドは' Match'を返します。 'Message'は、2番目のグループが2番目のグループを名前で捕捉できるように私が選んだ名前です。 –

+0

@theonlygustiまた、この正規表現を 'static'フィールドとして使うこともできます。このメソッドを頻繁に使用する場合は、 'new Regex(...)'を一度作成して、それを好きなだけ使用することをお勧めします。 –

1

はこれを試してみてください、あなたの最初のcapture.likeにしたいパターンと同じ数を追加することができます。私は、あなたが探している結果を与える

var source = @"400 ERROR The second argument must be larger than the first."; 
var result = String.Join(" ", source.Split(' ').Skip(2)); 

を。

1
var result = String.Join(" ",error.split(' ').Skip(2)) 

またはこの

var output = Regex.Replace(ErrorText,@"\d+?\s\w+",""); 
関連する問題