0

YouTube API 用に GData が提供する文字列の一部を抽出しようとしています。ビデオのタイトルとサムネイルの文字列を分離できますが、テキストの説明ラベルを作成する必要があります。以下の文字列全体をコピーしましたが、ここから次の部分を抽出するのが困難です。

type:plain content次のテキストをコピーして}区切り記号で新しい文字列を終了することで、新しい NSString を作成する方法に行き詰まっています。

{type:plain content:ほぼ毎日 1 週間にわたって動画を作成しましたが、以前ほどストレスを感じなくなりました。終わり!

ハンク (と弟のジョン): http://youtube.com/vlogbrothers }

スキャナーを使用してみましたが成功しませんでした。この問題に関するアドバイスや指針をいただければ幸いです。

完全な文字列の完全な形式は次のとおりです。

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}"
4

2 に答える 2

0

文字列は JSON のように見えるかもしれませんが、有効な JSON ではありません。あなたが求めていることを達成する 1 つの方法は、正規表現 (iOS4+) を使用することです。myString次のようなことを試すことができます(それがあなたが提供したテキストであると仮定してNSString...):

NSError *error;
NSRegularExpression *regex = [NSRegularExpression 
                              regularExpressionWithPattern:@"\\{type:plain.+\\}(?=\\s)"
                              options:NSRegularExpressionDotMatchesLineSeparators
                              error:&error];

NSRange range   = [regex rangeOfFirstMatchInString:myString
                                           options:0 
                                             range:NSMakeRange(0, [myString length])];
NSString *result = [myString substringWithRange:range];

result今は:

{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 が示唆したように) が最適であることに同意します。しかし、少なくとも仕事をすることができるものです...

于 2012-05-03T21:59:08.797 に答える
0

これは JSON のように見えます。iOS5 のみをターゲットにしている場合は、組み込みの JSON コンバーターを使用して、その JSON を NSDictionary に変換できます。これにより、探しているデータを簡単に見つけることができます。

于 2012-05-03T20:57:41.683 に答える