2016-08-05 7 views
-1

私は働いていたObj-cアプリを持っています。今はそうではありません。これは私が解析しようとしている文字列の一部です:NSScannerがターゲット文字列の最初のオカレンスを見つけられないのはなぜですか?

<のdivクラス= "PostContent"> <のdivクラス= "記事"> <のdivクラス= "POST"> <のdivクラス= "PostContent "> < div> < img style =" background-image:url( 'http://cdn.openisbn.com/images/no_book_cover.jpg'); border:solid 1px#383c40; "src =/cover/0345377443_220.jpg width = 220 border = 0 title ="オオカミ:ワイルド女性原型の神話や物語 "> </div>の著者:<のhref =" /著者/ Clarissa_Pinkola_Estes/">クラリッサ・ピンコラ・エステス</A> < BR>出版社:<のhref =" /出版社/ Ballantine_Books ""バランタインブーKS </aが>千

数文字後に、このテキストが表示されます。

<のdivクラス= "ブロック" ID = "LayoutColumn_3"> <のdivクラス= "blockTop"> </DIV > < h2 </h2> < div align = "center"> < ahref = "/ isbn/006251380X /"> < img style = "padding:1px; border:1px solid#6c6c6c; "忠実な庭師:絶対に死なないものについての賢明な物語"> </a > < BR> < a href = "/ isbn/006251380X /">忠実な庭師:絶対に死なないものについての賢明な話</a> < BR> < a href = "/ isbn/1604076356 /"> < imgスタイル= "パディング:1px;境界:1pxソリッド#6c6c6c;背景画像:のURL(「http://cdn.openisbn.com/images/no_book_cover.jpg」);」

これは、タイトルを見つけるために私のコードです:何が起こっている

[scanner setScanLocation:0]; 
[scanner setCaseSensitive:NO]; 
[scanner scanUpToString:@" border=0 title=\"" intoString:nil]; // title 
scanner.scanLocation += 17; 
[scanner scanUpToString:@"\">" intoString:&tempString]; 
oTitle.text = tempString; 

は、それが最初に出現した(女性は誰の実行をスキップしている..です。)を検索し、2番目のオカレンス(T 彼はFaithful Gardner)を見つけ出し、最初の文字列ではなく最初の文字列を返します。これは正常に動作し、コードを変更していないので、おそらく動作していない可能性がありますし、おそらくコードを変更して再度動作させることを提案しますか?本当にうれしいですそれ!それが最初に出現を見つけていない

+0

@rob no、もう一度チェックして、* border *と* title *の間に2つのスペースはありませんが、コメントに感謝します。レイのチュートリアルを読んで、それが簡単に収まるかどうかを見ていきます。 :D – SpokaneDude

+0

@Robダブルスペースに関するご意見をお聞かせください。それが問題でした!私はあなたにコメントのポイントを与えたいと思います。 SD – SpokaneDude

答えて

1

理由は、特定のインスタンスがborder=0title="..."の間で二つの空間を有するように見えるということです。

<img style="..." src=... width=220 border=0 title="Women Who Run With ..."> 

あなたのスキャナは、単一のスペースでの文字列を探しています。


個人的には、HTMLパーサーの使用を検討することをおすすめします。初めて使用するときは少し難しいですが、HTMLを解析する非常に強力で柔軟な方法であり、入力の文字単位のスキャンの雑草からあなたを逃がします。この種の問題のために設計されています。 TFHppleまたはRay Wenderlich tutorial on how to parse HTMLを参照してください。

+0

ありがとうRob ...私のコードは正しかった。ソースは1つのスペースから2つのスペースに変更されました...あなたは良い目を持っています! – SpokaneDude

関連する問題