3 回答
TA贡献1808条经验 获得超4个赞
你可以使用RegEx
与(?<=Macdonald\s).*(?=\sand)
解释
正向后看
(?<=Macdonald\s)
Macdonald
Macdonald
从字面上匹配字符\s
匹配任何空格字符.*
匹配任何字符(行终止符除外)*
量词-在零次和无限制次数之间进行匹配,并尽可能多地匹配,并根据需要返回(贪婪)积极向前
(?=\sand)
\s
匹配任何空白字符并按and
字面意义匹配字符
例子
var input = "Old Macdonald had a farm and on";
var regex = new Regex(@"(?<=Macdonald\s).*(?=\sand)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var match = regex.Match(input);
if (match.Success)
{
Console.WriteLine(match.Value);
}
else
{
Console.WriteLine("No farms for you");
}
输出
had a farm
TA贡献1795条经验 获得超7个赞
正如我在评论中提到的那样,我建议使用Regex(TheGeneral建议的方式)。但是还有另一种方法可以做到这一点。
将其添加为解决方法
string input = "Old Macdonald had a farm and on";
List<string> words = input.Split(" ".ToCharArray()).ToList();
string finalString = "";
int indexOfMac = words.IndexOf("Macdonald");
int indexOfFarm = words.IndexOf("farm");
if (indexOfFarm != -1 && indexOfMac != -1 && //if word is not there in string, index will be '-1'
indexOfMac < indexOfFarm) //checking if 'macdonald' comes before 'farm' or not
{
//looping from Macdonald + 1 to farm, and make final string
for(int i = indexOfMac + 1; i <= indexOfFarm; i++)
{
finalString += words[i] + " ";
}
}
else
{
finalString = "No farms for you";
}
Console.WriteLine(finalString);
- 3 回答
- 0 关注
- 170 浏览
添加回答
举报