2017-11-08 19 views
0

多くの例が見つかりましたhow to find string between 2 stringsしかし、どれもその文字列の複数の出現を処理する方法を示していません。私はこの複数の出現を持つ文字列の間に文字列を取得

「こんにちは、私は<id>ユーザー</id>だ。私は歳です、そしていくつかの国</id><id>に住んでいます。」のような例の文字列を持っています

背景にある考え方は、UITextFieldの範囲内でその文字列をハイパーリンクし、その文字列からタグを削除したいと考えています。私はまた、ハイパーリンクを表示する必要があります、2つのタイプのタグを持っている他の単語やフレーズのテキストの説明をクリックしてポップアップ警告表示が必要です。

EDIT:テキストで提供タグの間に起因する文字列を使用してテキストの内容を変更することで、このロジックを拡張するのに最適な実用的なソリューションを発見

。リンクhere

+0

文字列定数かテキストが変わるのですか? – gurmandeep

+0

サーバー側で文字列が生成され、この文字列のリストが取得されます。約100項目がハイパーリンクで表示されます。 – Aleksandar

答えて

1

@Aleksandar

NSString *serverOutput = @"Hi, I am <id>User</id>. I am 20 <id>years old</id>, and live in <id>some country</id>."; 
    if([serverOutput containsString:@"</id>"]) 
    { 
     NSArray *arrSeparate = [serverOutput componentsSeparatedByString:@"</id>"]; 
     NSString *output = @""; 
     for(int i=0; i<arrSeparate.count; i++) 
     { 
      if([[arrSeparate objectAtIndex:i] containsString:@"<id>"]) 
      { 
       NSArray *arrTest = [[arrSeparate objectAtIndex:i] componentsSeparatedByString:@"<id>"]; 
       if(output.length < 1) 
        output = [arrTest objectAtIndex:1]; 
       else 
        output = [NSString stringWithFormat:@"%@\n%@",output,[arrTest objectAtIndex:1]]; 
      } 
     } 
     serverOutput = output; 
    } 
    NSLog(@"%@", serverOutput); 
+1

はい、これは私にとってもうまくいきます。私はそこから私が必要とするものを達成するために働くことができます。あなたと@ gurmandeepの両方が実用的な解決策を与えました。 – Aleksandar

1

はこのに見てください、と私はこれがあなたのキーワードは

NSString *serverOutput = @"Hi, I am <id>User</id>. I am 20 <id>years old</id>, and live in <id>some country</id>"; 
NSUInteger count = 0, length = [serverOutput length]; 
NSRange startRange = NSMakeRange(0, length); 
NSRange endRange = NSMakeRange(0, length); 
while(startRange.location != NSNotFound) 
{ 
    startRange = [serverOutput rangeOfString: @"<id>" options:0 range:startRange]; 
    if(startRange.location != NSNotFound) 
    { 
     endRange = [serverOutput rangeOfString: @"</id>" options:0 range:endRange]; 
     startRange = NSMakeRange(startRange.location + startRange.length, length - (startRange.location + startRange.length)); 
     endRange = NSMakeRange(endRange.location + endRange.length, length - (endRange.location + endRange.length)); 
     count++; 
    } 
} 

startRange意志が存在するすべての範囲を取得します願っています..それは私の作品にこれを試してみてくださいタグの開始位置からendRangeまでの範囲を指定します。

範囲、場所を変更し、属性付き文字列を作成し、文字列の範囲が利用できるようにハイパーリンクを追加することができます。

+1

はい、期待どおりに動作します。ありがとうございました! – Aleksandar

+0

ハッピーコーディングメイト – gurmandeep

関連する問題