3 回答
TA贡献1963条经验 获得超6个赞
如果你允许我...
并非每个基于文本的问题都需要使用正则表达式。很多时候,您可以只使用 egSplit()和其他一些目的驱动的语句来实现您的目标。这比试图击败有时无法阅读的正则表达式提交要容易得多(并在 6 个月后阅读)。
就是这样:
public static void Main()
{
var strings = new[] {"2011 Trieste MED clean/crude/crude",
"2013 Trieste fo/crude/crude",
"2013 Ningbo East Pacific cca/cf/ce",
"2014 Agioi theodoroi MED cde/fo/ce"};
foreach (var s in strings)
Console.WriteLine(GetName(s));
}
public static string GetName(string s)
{
var allWords = s.Split(' ');
var nameWords = allWords.Skip(1).Take(allWords.Length - 2);
return string.Join(" ", nameWords);
}
Skip()并且Take()是 Linq 扩展方法,在添加using System.Linq;到 C# 文件后可用。
看到它运行: https ://dotnetfiddle.net/FTBcfC
TA贡献1785条经验 获得超8个赞
var strings = new[] {
"2011 Trieste MED clean/crude/crude",
"2013 Trieste fo/crude/crude",
"2013 Ningbo East Pacific cca/cf/ce",
"2014 Agioi theodoroi MED cde/fo/ce"
};
var pattern = @"^\d+\s+(.+)(?=\s+.*?/)";
foreach (var s in strings)
{
var match = Regex.Match(s, pattern);
if (match.Success)
WriteLine(match.Groups[1].Value);
else
WriteLine("No matches found.");
}
/*
Output:
Trieste MED
Trieste
Ningbo East Pacific
Agioi theodoroi MED
*/
- 3 回答
- 0 关注
- 215 浏览
添加回答
举报
