删除包含特定单词

时间:2017-02-10 11:12:33

标签: c# substring

我需要取一个字符串,然后在指定的短语之后删除其内容,然后返回剩下的最后一个单词。 在这种情况下,"更多信息"。

基本上,这个脚本应该采用字符串

     "Please visit 

this 
website
 for more information if you have questions"

并返回"for"

这个词

(请注意,这只是一个例子,字符串可能是任何东西,我故意搞砸了换行符,因为它看起来是一半的时间。)

下面的split方法有效,返回最后一个单词,但substring方法不起作用。

知道我做错了吗?

   public static string InfoParse(string input)


{
    string extract = input;


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


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

    return extract;



}

2 个答案:

答案 0 :(得分:1)

更改为:

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

或者这表示你的代码出了什么问题:

<part>
    <spec key="ID" value="aa" />
    <spec key="Family" value="bb" />
    <spec class="0" key="bb" type="desc" value="30" />
</part>
<part>
    <spec key="ID" value="bo" />
    <spec key="Family" value="bbc" />
    <spec class="1" key="bss" type="desc" value="30" />
</part>

您的拆分返回后的条目最后一个空格,最后一个空格正好是&#34之前的空格;更多信息&#34; - &GT;所以它返回一个空字符串

编辑:现在还有换行

答案 1 :(得分:0)

您可以使用RegularExpression:

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;
}