提取以x开头并以y结尾的字符串

时间:2010-03-29 01:08:57

标签: c# string

首先,我对此进行了搜索,并且能够找到如何使用String.Split()之类的东西来根据条件提取字符串。然而,我无法找到如何根据结束条件提取它。例如,我有一个包含图像链接的文件:http://i594.photobucket.com/albums/tt27/34/444.jpghttp://i594.photobucket.com/albums/as/asfd/ghjk6.jpg 您会注意到所有图片都以http://开头,以.jpg结尾。但是,.jpg由http://继承而没有空格,这使得这更加困难。

所以基本上我试图找到一种方法(正则表达式?)从以http://开头并以.jpg结尾的字符串中提取字符串

5 个答案:

答案 0 :(得分:4)

正则表达式是最简单的方法。如果您不熟悉正则表达式,可以查看Regex Buddy。这是一个相对便宜的小工具,我发现在学习时非常有用。对于您的特定情况,可能的表达式是:

(http://.+?\.jpg)

它可能需要更多细化,因为有一些边界情况可以解决这个问题,但如果文件是一个简单的列表,它就可以工作。


您还可以免费快速测试表达式here


根据您的最新评论,如果您还有其他非图片的链接,那么您需要确保它不会从http://开始一个链接,并一直读到.jpg下一张图片。由于不允许URL包含空格,因此您可以这样做:

(http://[^\s]+\.jpg)

这基本上说,“匹配以http://开头并以.jpg结尾的字符串,其中两者之间至少有一个字符,这些字符都不是空格”。

答案 1 :(得分:2)

    Regex RegexObj = new Regex("http://.+?\\.jpg");
Match MatchResults = RegexObj.Match(subject);
while (MatchResults.Success) {
    //Do something with it 
    MatchResults = MatchResults.NextMatch();
     }

答案 2 :(得分:1)

在您的具体情况下,您可以随时按“.jpg”拆分。您可能最终会在数组末尾添加一个空元素,并且如果需要,必须在每个文件的末尾附加.jpg。除此之外,我认为它会起作用。

测试了以下代码并且工作正常:

public void SplitTest()
{
    string test = "http://i594.photobucket.com/albums/tt27/34/444.jpghttp://i594.photobucket.com/albums/as/asfd/ghjk6.jpg";
    string[] items = test.Split(new string[] { ".jpg" }, StringSplitOptions.RemoveEmptyEntries);
}

它甚至摆脱了空洞的进入......

答案 3 :(得分:1)

以下LINQ将以http:分隔,并确保只获取以jpg结尾的值。

 var images = from i in imageList.Split(new[] {"http:"}, 
                                     StringSplitOptions.RemoveEmptyEntries)
              where i.EndsWith(".jpg")
              select "http:" + i;

答案 4 :(得分:0)

正则表达式对此非常有效。 用于Regex的C#(和Java)中的Here's an example