0

我正在为 iOS 创建一个文字游戏。我想防止玩家制作复数词。有没有我可以用来编写函数的字典

isPluralWord(@"tables")

这将返回 true 和

isPluralWord(@"table")

将返回假。

谢谢!

4

3 回答 3

0

天真的和不正确的解决方案:

BOOL isPlural(NSString *s)
{
    return [s characterAtIndex:s.length - 1] == 's';
}

正确的解决方案是将其与检测不规则单词(例如“formula”和“formulae”)以及不是复数但无论如何以“s”结尾的单词(例如“括号”和“括号”)的智能结合起来. 为此,您可能想要获取某种具有一些语法注释的英语单词数据库。

于 2013-06-13T12:33:46.497 回答
0

您可以NSLinguisticTagger这样使用:

#import <Foundation/Foundation.h>

NSLinguisticTagger *linguisticTagger = [[NSLinguisticTagger alloc] initWithTagSchemes:@[NSLinguisticTagSchemeLemma] options:kNilOptions];

linguisticTagger.string = @"table tables";

[linguisticTagger enumerateTagsInRange:NSMakeRange(0, linguisticTagger.string.length) scheme:NSLinguisticTagSchemeLemma options:NSLinguisticTaggerOmitWhitespace usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
    NSString *word = [linguisticTagger.string substringWithRange:tokenRange];

    if ([word isEqualToString:tag]) {
        NSLog(@"word '%@' is singular", word);
    } else {
        NSLog(@"word '%@' is plural", word);
    }
}];
于 2017-07-03T06:20:07.717 回答
0

而不是检查字符串末尾的字符's',您应该使用Localizable.stringsdict来表示这样的复数单词。在这个 plist 中,您可以提及您的键映射与其复数。

请查看以下此类字符串的示例

<key>%d Likes</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>%#@likes@</string>
    <key>likes</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>one</key>
        <string>%d Like</string>
        <key>other</key>
        <string>%d Likes</string>
    </dict>
</dict>

在 plist 中定义上述复数后,您可以通过将整数与字符串一起传递来直接调用它

NSInteger x = 1 传递 1,其他数字传递任何其他数字

NSString *pluralString = [NSString localizedStringWithFormat:NSLocalizedString(@"%d Likes", @"X number of Likes for a post"), x]

In case of X = 1, you will get 1 Like
And, In case of X = any number other than 1, consider 10, answer will be 10 Likes.

您还可以查看链接以获取更多参考: http: //macoscope.com/blog/effective-localization-when-working-with-language-plural-rules/

于 2017-07-03T05:56:07.650 回答