2

我用 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);  

这应该变成这样:

林(はやし)さんは英语(えいご)は话(はな)せます。</p>

进入这个:

<ruby><rb>林&lt;/rb><rp>(</rp><rt>はやし&lt;/rt><rp>)</rp></ruby>さんは&lt;ruby><rb>英語</rb><rp>(</rp><rt>えいご&lt;/rt><rp>)</rp></ruby>は&lt;ruby><rb>話&lt;/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];
4

1 回答 1

3

这通常是当我踢自己的头时...

事实证明,Objective-C 确实接受了\p{Han},除了我必须转义反斜杠,否则它无法识别它!

于 2012-12-09T21:49:45.777 回答