2012-05-03 61 views
0

YouTube APIのGData提供文字列の一部を抽出しようとしています。私はビデオのタイトルとサムネイルの文字列を分けることができますが、テキストの説明ラベルを作成する必要があります。私は以下の完全な文字列をコピーしましたが、私が持っている難しさはこれから次の部分を抽出しています。Objective-Cの文字列から文字列を抽出する

type:plain contentのテキストをコピーしてから、新しい文字列を}デリミタで終了することによって、新しいNSStringを作成する方法について固まっています。

{タイプ:平野内容:私は全体の 週間ほとんど毎日ビデオを作った、と私は以前 あったようにストレスがたまって、今私はかなり感じていませんよ。終わり!

ハンク(とその兄弟ヨハネ):http://youtube.com/vlogbrothers}

私は成功せずにスキャナーを使用して試してみましたし、この問題について何かアドバイスやポインタをいただければ幸いです。

完全な文字列の完全な形式は次のとおりです。あなただけあなたが簡単にあなたが探しているデータを見つけることができますNSDictionaryの、にそのJSONに変換するためにJSONコンバータに内蔵され使用することができiOS5ををターゲットにしている場合は、JSONのように見える

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

答えて

0

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文字列を持つことができた場合、デシリアライゼーション(ケンドール提案)が最適であることに同意します。しかし、少なくとも仕事をすることができるものです...

+0

ありがとう。あなたが与えた正規表現の例は、私が必要とするもの(最初と最後の文字)をかなり抽出していませんが、私はこれを形にするために調べるでしょう。 –

+0

しかし、私は間違った方法でこれについて行くと思います。私が気に入っているのは、GDataフィードからコンテンツテキストを直接抽出することですが、GData APIのGDataTextConstruct、GDataAtomContentなどを辿りながらも、これを行う方法は失われています。 –

+0

だから、あなたは 'content'のテキストだけが必要ですよね? – Alladinian

関連する問題