Ответ 1
Вы можете использовать регулярное выражение для обработки арабских (Alif) разных фигур.
Предположим, что у вас есть контекст, который "محمد بن إبراهيم الابراهيمي" , и шаблон для поиска - "إبراهيم" , тогда вы можете преобразовать шаблон к регулярному выражению, которое обрабатывает дифференцирование между "أ". Регулярное выражение должно быть "(أ | إ | ا) بر (أ | إ | ا) هيم" . Это будет искать шаблон по всем возможным формам.
Вот простой код, который я написал:
#import <Foundation/Foundation.h>
NSString * arabify(NSString * string)
{
NSRegularExpression * alifRegex = [NSRegularExpression regularExpressionWithPattern:@"(أ|ا|إ)" options:0 error:nil];
return [alifRegex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"(أ|ا|إ)"];
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString * context = @"محمد بن إبراهيم الابراهيمي";
NSString * pattern = @"إبراهيم";
// Get the regex for the Arabic word.
NSString * regex = arabify(pattern);
NSLog(@"context = %@", context);
NSLog(@"pattern = %@", pattern);
NSLog(@"regex = %@", regex);
NSRange range = [context rangeOfString:regex options:NSRegularExpressionSearch];
if (range.location == NSNotFound)
{
NSLog(@"Not found.");
}
else
{
NSLog(@"Found.");
NSLog(@"location = %lu, length = %lu", (unsigned long)range.location, (unsigned long)range.length);
}
}
return 0;
}
Брат удачи.