2

PHP でオープン ソース プロジェクトを作成し、演習として、OSX でデスクトップ アプリとして実行する Objective-C ポートを作成しています。

次の正規表現を 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{ひらがな} サブセットを表現する方法がわかりません。

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 に答える