2017-02-10 11 views
0

文字列を取り、指定された文字列を含むその内容を削除してから最後の単語を残す必要があります。 この場合、「詳細」。特定の単語を含む文字列の内容を削除する

基本的には、このスクリプトは文字列

 "Please visit 

this 
website 
for more information if you have questions" 

を取る必要があり、(ワード"for"

を返し、これはあくまでも一例であることに注意してください、文字列は何もすることができ、私はそれが改行で台無しに作られました故意にそれは時間の半分に見えます)。

最後の単語を返しますが、部分文字列メソッドは機能しません。

私が間違っていることは何ですか?

public static string InfoParse(string input) 


{ 
    string extract = input; 


    extract = input.Substring(0, input.IndexOf("more information")); 


    extract = extract.Split(' ').Last(); 

    return extract; 



} 

答えて

1

これに変更します。

public static string InfoParse(string input) 
    { 
     //string extract = input; 
     string extract = input.Substring(0, input.IndexOf("more information")); 
     extract = extract.Split(new string[] {" ", "\r\n", "\r", "\n"}, StringSplitOptions.RemoveEmptyEntries).Last(); 
     return extract; 
    } 

か、これはあなたのコードで間違っていたものを表示する:

public static string InfoParse(string input) 
{ 
    //string extract = input; 
    string extract = input.Substring(0, input.IndexOf(" more information")); 
    extract = extract.Split(' ').Last(); 
    return extract; 
} 

あなたの分割は後の最後のスペースと最後のエントリを返さ空白文字列を返します。空の文字列を返します。

EDIT:今も改行

+0

最初のものは、明らかに、より堅牢である(その「などの改行を台無しに」考慮して)より良いいずれかの一貫性の空白文字にカウントされませ。 – dlatikay

+0

それは正しいです、元の質問ソースの正確な問題を表示したかった – Pedro

+0

それは動作しますが、最後の単語の一部として改行を考慮しています。最後の単語を解析するために改行を改行する方法がありますか? –

0

であなたは正規表現を使用することができます。

using System.Text.RegularExpressions; 

string InfoParse(string input, string word) 
{ 
    Match m = Regex.Match(input, @"\s?(?<LastBefore>\w+)\s+" + word, RegexOptions.Singleline); 
    if (m.Success) 
     return m.Groups["LastBefore"].Value; 
    return null; 
} 
関連する問題