Objective-C 텍스트에서 문자열을 검색하고 색상을 지정합니다.
2941 단어 XcodeiOSObjective-C
문장에서 문자열을 검색하는 단계
2. NSRange를 배열에 저장하고 싶습니다.
3. NSRange는 객체 타입이 아니므로 NSValue로 객체 타입으로 변환
-(NSArray*)searchWordWithRange:(NSString*)targetText word:(NSString*)
searchWord
{
//! rangeオブジェクト(NSValue)の格納配列
NSMutableArray* arrayRangeValue = [[NSMutableArray alloc] init];
//! range初期化
NSRange range = NSMakeRange(0, targetText.length);
//! targetTextから検索 見つからなかったらwhile文を抜ける
while ([targetText rangeOfString:searchWord options:NSLiteralSearch
range:range].location != NSNotFound) {
//! 発見したrange
NSRange rangeDetect = [targetText rangeOfString:searchWord
options:NSLiteralSearch range:range];
//! NSRangeをNSValueに変換
[arrayRangeValue addObject:[NSValue valueWithRange:rangeDetect]];
//! rangeのオフセット変更
range = NSMakeRange(rangeDetect.location+rangeDetect.length,
targetText.length - (rangeDetect.location+rangeDetect.length));
}
return arrayRangeValue;
}
NSRange(NSValue)를 포함한 배열과 텍스트 본문을 인수로 하여 색을 붙이는 함수
-(NSAttributedString*)highlightStringByRanges:(NSString*)targetText
ranges:(NSArray*)arrayRange
{
NSMutableAttributedString* stringAttributed = [[
NSMutableAttributedString alloc] initWithString:targetText
attributes:nil];
for (NSValue* rangeObject in arrayRange) {
NSRange range = [rangeObject rangeValue];
[stringAttributed addAttribute:NSBackgroundColorAttributeName
value:[UIColor cyanColor] range:range];
}
return stringAttributed;
}
ViewDidLoad에서 위의 두 가지 메서드 호출
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSBundle* bundle = [NSBundle mainBundle];
//! 青空文庫の「こころ」を取得
NSString* stringPath = [bundle pathForResource:@"kokoro" ofType:@"txt"];
NSString* stringText = [NSString stringWithContentsOfFile:stringPath encoding:NSShiftJISStringEncoding error:nil];
//! "私"を検索
NSArray* arrayRange = [self searchWordWithRange:stringText word:@"私"];
//! UITextViewのattributedTextに設定すること
_textview.attributedText = [self highlightStringByRanges:stringText ranges:arrayRange];
}
나츠메 소세키의 "마음"에서 "나"를 검색 한 결과
Reference
이 문제에 관하여(Objective-C 텍스트에서 문자열을 검색하고 색상을 지정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fettelapaua/items/467b97c57af01ab33944
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
-(NSAttributedString*)highlightStringByRanges:(NSString*)targetText
ranges:(NSArray*)arrayRange
{
NSMutableAttributedString* stringAttributed = [[
NSMutableAttributedString alloc] initWithString:targetText
attributes:nil];
for (NSValue* rangeObject in arrayRange) {
NSRange range = [rangeObject rangeValue];
[stringAttributed addAttribute:NSBackgroundColorAttributeName
value:[UIColor cyanColor] range:range];
}
return stringAttributed;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSBundle* bundle = [NSBundle mainBundle];
//! 青空文庫の「こころ」を取得
NSString* stringPath = [bundle pathForResource:@"kokoro" ofType:@"txt"];
NSString* stringText = [NSString stringWithContentsOfFile:stringPath encoding:NSShiftJISStringEncoding error:nil];
//! "私"を検索
NSArray* arrayRange = [self searchWordWithRange:stringText word:@"私"];
//! UITextViewのattributedTextに設定すること
_textview.attributedText = [self highlightStringByRanges:stringText ranges:arrayRange];
}
나츠메 소세키의 "마음"에서 "나"를 검색 한 결과
Reference
이 문제에 관하여(Objective-C 텍스트에서 문자열을 검색하고 색상을 지정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fettelapaua/items/467b97c57af01ab33944
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Objective-C 텍스트에서 문자열을 검색하고 색상을 지정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fettelapaua/items/467b97c57af01ab33944텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)