我用PHP编写了一个开源项目,作为练习我正在创建一个Objective-C端口,作为OSX中的桌面应用程序运行。
我难以尝试将以下正则表达式从PHP转换为Objective-C。问题是我甚至不知道甚至使用什么类。我试图使用NSRange和NSRegularExpression但没有取得多大成功。
这是我的PHP代码:
$pattern = '/' .
'([\p{Han}]+)' . // One or more kanji
'(([\p{Hiragana}]*))' . // Hiragana between japanese style parentheses
'/u';
return preg_filter($pattern, '<ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>', $this->_text);
这应该转为:
林(はやし)さんは英语(えいご)は话(はな)せます。
进入这个:
<ruby><rb>林</rb><rp>(</rp><rt>はやし</rt><rp>)</rp></ruby>さんは<ruby><rb>英語</rb><rp>(</rp><rt>えいご</rt><rp>)</rp></ruby>は<ruby><rb>話</rb><rp>(</rp><rt>はな</rt><rp>)</rp></ruby>せます。
编辑:
我在Apple Docs尝试了一些字符串替换示例,但我永远无法解决的部分是实际的正则表达式模式。我不知道如何在Objective-C中表示\ p {Han}和\ p {Hiragana}子集。
NSError *error = NULL;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"some pattern here"
options:NSRegularExpressionCaseInsensitive
error:&error];
答案 0 :(得分:3)
这通常是我把自己踢到脑袋的时候......
事实证明,Objective-C接受\p{Han}
,除了我必须逃避反斜杠,否则它没有认出来!