删除一个字符串的内容,包括一个特定的字词后
问题描述:
我需要一个字符串,然后删除它的内容,包括和之后的指定短语,然后返回剩下的最后一个字。 在这种情况下,“更多信息”。删除一个字符串的内容,包括一个特定的字词后
基本上,这个脚本应采取串
"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;
}
答
改成这样:
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;
}
你split返回进入后的最后一个空格,最后空间恰好是“更多信息”之前的空格 - >因此它返回一个空字符串
编辑:现在也有断行
答
您可以使用正则表达式:
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;
}
第一个显然是更强大的(考虑到他们的“搞砸了换行等”),最好不要上一致空白要么算。 – dlatikay
这是对的,只是想显示原始问题的确切问题 - 来源 – Pedro
它的工作原理,但它考虑换行符作为最后一个词的一部分。为了解析最后一个单词的目的,是否有办法让换行符与空格相同? –