在字符串中提取一个以某些东西开头并以某些东西结尾的模式

时间:2013-10-09 13:50:00

标签: c# regex

我需要在字符串中提取一个以

开头并以

结尾的模式

这是网址:

http://monsite.com/articles/%d8%a7%d8%af%d9%85%d9%8a%d9%84%d8%b3%d9%88%d9_sto3955603/description.html

在C#中,如何从此网址中提取模式%d8%a7%d8%af%d9%85%d9%8a%d9%84%d8%b3%d9%88%d9_

模式的起始字符为%,结束字符为_

2 个答案:

答案 0 :(得分:1)

您可以使用String.SubStringString.IndexOf等方法;

string s = "http://monsite.com/articles/%d8%a7%d8%af%d9%85%d9%8a%d9%84%d8%b3%d9%88%d9_sto3955603/description.html";
Console.WriteLine(s.Substring(s.IndexOf('%'), s.IndexOf('_' ) - s.IndexOf('%') + 1));

输出将是;

%d8%a7%d8%af%d9%85%d9%8a%d9%84%d8%b3%d9%88%d9_

这里有 Demonstration

如果您想首先检查字符串是否包含%_字符,则可以使用String.Contains方法;

if(s.Contains("%") && s.Contains("_") && (s.IndexOf('_') > s.IndexOf('%')))
{
  // Your string has % and _ characters and also _ comes after first %.
}

答案 1 :(得分:1)

请考虑以下代码段...

string input = "http://monsite.com/articles/%d8%a7%d8%af%d9%85%d9%8a%d9%84%d8%b3%d9%88%d9_sto3955603/description.html";
var output = Regex.Match(input, @"%[\w\d%]*_");
Console.WriteLine(output.Value);

输出是......

  

%D8%A7%D8%AF%D9%85%D9%8A%D9%84%D8%B3%D9%88%D9 _