Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
从Objective-C中的字符串中提取字符串_Objective C_Ios_Gdata - Fatal编程技术网

从Objective-C中的字符串中提取字符串

从Objective-C中的字符串中提取字符串,objective-c,ios,gdata,Objective C,Ios,Gdata,我试图提取GData为YouTube API提供的字符串的一部分。我可以分离出视频标题和缩略图字符串,但需要创建一个文本描述标签。我已经复制了下面的完整字符串,但我遇到的困难是从中提取以下部分 我一直在研究如何通过查找type:plain content复制后面的文本,然后在}分隔符上结束新字符串来创建新的NSString {type:plain content:我几乎每天都会制作一个视频 一周了,现在我没有以前那么紧张了 以前。结束 汉克(和他的兄弟约翰):} 我曾尝试使用扫描仪,但没有成功,

我试图提取GData为YouTube API提供的字符串的一部分。我可以分离出视频标题和缩略图字符串,但需要创建一个文本描述标签。我已经复制了下面的完整字符串,但我遇到的困难是从中提取以下部分

我一直在研究如何通过查找
type:plain content
复制后面的文本,然后在
}
分隔符上结束新字符串来创建新的NSString

{type:plain content:我几乎每天都会制作一个视频 一周了,现在我没有以前那么紧张了 以前。结束

汉克(和他的兄弟约翰):}

我曾尝试使用扫描仪,但没有成功,对此问题的任何建议或建议都将不胜感激

完整字符串的完整格式如下所示

GDataEntryYouTubeVideo 0xc125e20: {v:2.1 title:Crisis Averted contentSrc:https://www.youtube.com/v/RKQWfVzUBt8?version=3&f=user_uploads&app=youtube_gdata etag:W/"DUEGR347eCp7I2A9WhVVEEo." authors:1 categories:12 links:alternate,video.responses,video.related,mobile,self id:tag:youtube.com,2008:video:RKQWfVzUBt8 rating:+19935/-228 comment:GDataComment 0xc12c260: {feedLink:GDataFeedLink 0xc12c9c0: {href:https://gdata.youtube.com/feeds/api/videos/RKQWfVzUBt8/comments rel:http://gdata.youtube.com/schemas/2007#comments countHint:7096 href:https://gdata.youtube.com/feeds/api/videos/RKQWfVzUBt8/comments countHint:7096 rel:http://gdata.youtube.com/schemas/2007#comments}} stats:GDataYouTubeStatistics 0xc12d640: {viewCount:810340 favoriteCount:1096} mediaGroup:GDataYouTubeMediaGroup 0xc12e700: {categories:(
    "GDataMediaCategory 0xc131ab0: {label:People & Blogs scheme:http://gdata.youtube.com/schemas/2007/categories.cat content:People}" ) contents:(
    "GDataMediaContent 0xc130750: {url:https://www.youtube.com/v/RKQWfVzUBt8?version=3&f=user_uploads&app=youtube_gdata type:application/x-shockwave-flash medium:video isDefault:true expression:full duration:201}",
    "GDataMediaContent 0xc130f80: {url:rtsp://v5.cache2.c.youtube.com/CigLENy73wIaHwnfBtRcfRakRBMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp type:video/3gpp medium:video expression:full duration:201}",
    "GDataMediaContent 0xc131530: {url:rtsp://v2.cache2.c.youtube.com/CigLENy73wIaHwnfBtRcfRakRBMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp type:video/3gpp medium:video expression:full duration:201}" ) credits:(
    "GDataMediaCredit 0xc131ff0: {role:uploader scheme:urn:youtube content:charlieissocoollike unparsedAttr:yt:display}" ) thumbnails:(
    "GDataMediaThumbnail 0xc132c10: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/default.jpg height:90 width:120 time:00:01:40.500}",
    "GDataMediaThumbnail 0xc1336e0: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/mqdefault.jpg height:180 width:320}",
    "GDataMediaThumbnail 0xc133bb0: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/hqdefault.jpg height:360 width:480}",
    "GDataMediaThumbnail 0xc133f40: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/1.jpg height:90 width:120 time:00:00:50.250}",
    "GDataMediaThumbnail 0xc134320: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/2.jpg height:90 width:120 time:00:01:40.500}",
    "GDataMediaThumbnail 0xc134630: {url:http://i.ytimg.com/vi/RKQWfVzUBt8/3.jpg height:90 width:120 time:00:02:30.750}" ) keywords:GDataMediaKeywords 0xc134b70: {content:Charlie McDonnell, charlieissocoollike, YouTube, Mid-Life, Crisis, Week, Averted, Hank Green, vlogbrothers, America keywords:Charlie McDonnell, charlieissocoollike, YouTube, Mid-Life, Crisis, Week, Averted, Hank Green, vlogbrothers, America} description:GDataMediaDescription 0xc132880: {type:plain content:I made a video pretty much every day for a whole week, and now I'm not feeling quite as stressed out as I was previously. The end!

Hank (and his brother John): http://youtube.com/vlogbrothers} players:(
    "GDataMediaPlayer 0xc130960: {url:https://www.youtube.com/watch?v=RKQWfVzUBt8&feature=youtube_gdata_player}"

这看起来像是JSON,如果您只针对iOS5,您可以使用内置的JSON转换器将该JSON转换为NSDictionary,在那里您可以轻松找到要查找的数据。

您的字符串可能看起来像JSON,但它不是有效的JSON。 实现所需的一种方法是使用正则表达式(iOS4+)。您可以尝试类似的方法(假设
myString
是一个
NSString
,包含您提供的文本…):

结果
现在是:

{type:plain content:I made a video pretty much every day for a whole week, and now I'm not feeling quite as stressed out as I was previously. The end!

Hank (and his brother John): http://youtube.com/vlogbrothers}

我并不是说这是最好的方法,我同意如果你有一个有效的JSON字符串,反序列化(正如Kendall所建议的)将是最佳的。但至少有些东西可以做这项工作……

谢谢。你给出的正则表达式示例并没有完全提取出我需要的东西(开头和结尾的字符),但我将对此进行研究,以使其成型。但我认为我的做法是错误的。我觉得最好是直接从GData提要中提取内容文本,但同样,在对gdataxtconstruct、gdatatomcontent等进行拖网搜索之后。。。在GDataAPI中,仍然不知道如何做到这一点。是的,这是正确的。虽然为了绝对的清晰,它是描述的文本内容:GDataMediaDescription 0xc132880:找到了!!!!!gdatayoutubediagroups*mediaGroup=[(gdataentryoutubevideo*)条目mediaGroup];GDataMediaDescription*desc=[mediaGroup mediaDescription];NSString*mystring=[desc stringValue];刚才意识到您正在使用gdataobjc客户机。是的,这确实是一个解决方案(尽管如果我们现在就这样做的话,我们的答案会更有效:P)。
{type:plain content:I made a video pretty much every day for a whole week, and now I'm not feeling quite as stressed out as I was previously. The end!

Hank (and his brother John): http://youtube.com/vlogbrothers}