Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C语言中的大文本中获取特定字符串_C#_Regex_String_Image_Url - Fatal编程技术网

C# 从C语言中的大文本中获取特定字符串

C# 从C语言中的大文本中获取特定字符串,c#,regex,string,image,url,C#,Regex,String,Image,Url,我有以下巨大的文本: 我需要从标准分辨率获取所有图像URL "standard_resolution": { "url": "http://distilleryimage3.s3.amazonaws.com/59d6984092a211e392db12e25f465f4f_8.jpg", "width": 640, "height": 640 } 例如:从中,我想得到: 毕竟我想要一个包含所有标准URL的字符串列表。 我正在制作一个C应用程序。我想你可以使用这个模式:^http://[a-zA

我有以下巨大的文本: 我需要从标准分辨率获取所有图像URL

"standard_resolution": {
"url": "http://distilleryimage3.s3.amazonaws.com/59d6984092a211e392db12e25f465f4f_8.jpg",
"width": 640,
"height": 640
}
例如:从中,我想得到:

毕竟我想要一个包含所有标准URL的字符串列表。
我正在制作一个C应用程序。

我想你可以使用这个模式:^http://[a-zA-Z0-9\-\.]+.[a-zA-Z]{2,3}/\S*$

以下是一个例子:

var pattern = @"^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$";
var result= File.ReadAllText("filepath")
            .Split(new[] {'"'}, StringSplitOptions.RemoveEmptyEntries)
            .Where(line => Regex.IsMatch(line, pattern))
            .ToList();
我已测试,结果包含25个url供您输入。

尝试:

List<String> urls = new List<String>();                                                            
string txt = "standard_resolution...."; // Your main text                                                                   
while(txt.Contains("url"))                                                                          
{                                                                                                   
    txt = txt.Substring(txt.IndexOf("url\": \""));                                                  
    string geturl = txt.Substring(txt.IndexOf("url")+7, txt.IndexOf(".jpg") - txt.IndexOf("url")-3);
    urls.Add(geturl);                                                                              
    txt = txt.Substring(txt.IndexOf(".jpg"));                                                       
}                                                                                                   

塞尔曼22:你的答案会得到所有的URL,而他只想要标准分辨率的URL

这是我编的一个又快又脏的正则表达式。 您可能需要对它进行一些调整,以涵盖所有我还没有想到的关于JSON结构的潜在情况,以防它与您发布的源代码略有不同

const string input = @"
  ""standard_resolution"": {
  ""url"": ""http://distilleryimage3.s3.amazonaws.com/59d6984092a211e392db12e25f465f4f_8.jpg"",
  ""width"": 640,
  ""height"": 640
  }";

var pattern = @"\""standard_resolution\"".*?\""url\""\:\s\""(?<url>.*?)\""";

var urls = Regex.Matches(input.Replace("\r\n", string.Empty), pattern)
    .Cast<Match>()
    .Select(each => each.Groups["url"].Value);

var count = urls.Count();
问题直接范围之外的另一种选择是使用JSON解析器:

您的文本示例看起来像JSON。解析json并获取所有url值可能会更容易。这是一个json,但我如何使用CThere来实现呢?同样的问题有更好的答案。确切地但是我只想要标准的解析url'sIt'only在它是常量字符串的情况下工作,但是我使用以下命令获取de-JSON:var JSON=cliente.DownloadString**TOKEN**;您是否像我的代码那样删除输入中的新行?input.Replace\r\n,string.Empty您可能还需要根据Web服务器的格式尝试删除\r\n或\r\n。哦,我知道了。这类代码的模式是什么:标准分辨率:{url:http:\/\/蒸馏图像9.s3.amazonaws.com\/382b566491f211e3ae050a2150c32a45_8.jpg,宽度:640,高度:640}},用户在照片中:[],标题:{创建时间:1391995536,文本:thenight2,发件人:{用户名:thenight2,个人资料\图片:http:\/\/images.ak.instagram.com\/profiles\/anonymousUser.jpg,id:1082107741,全名:The Night Party 2},id:652428307931519401},用户\喜欢:false,id:65242830723564996\ u 1082107741,用户:{用户名:thenight2代码采用单行格式。