我想在PHP中检查字符串是单数还是复数。
答案 0 :(得分:3)
即使只是用英语这样的语言也不容易做到。首先,你需要识别你的名词。
使用如下规则:单词以“s”结尾非常简单,
SHEEP单数SHEEP复数
LADY单数女士复数 但是LADY'S
呢?所以你需要更加聪明,并在S
之前立即测试撇号尝试使用像Brill Parser之类的东西,这可以识别名词,并且可能适合于以合理的准确度识别单数/复数,但即使这样也不完美。
然后,你可能想用法语或德语做这个...你是一个非常广泛的问题,不能识别一种语言
修改强>
中描述了英语中单数/复数的复杂性的例子像porter stemming这样的技术可以识别单词的“根”,并且与实际单词的比较可以帮助检查扩展是否是典型的单数或复数。可以使用Porter Stemmer的PHP实现here。
答案 1 :(得分:0)
那取决于你的语言并不容易,甚至可能是不可判断的。
你如何区分“男人”和“男人”?
您可以使用启发式,就像所有内容一样,以“s”结尾是复数并提供其他异常情况,如上面提到的“man”。这也会导致错误的答案,因为例如“吻”以“s”结束但不是复数。
答案 2 :(得分:0)
鉴于已经显示出不同语言中复数词的确定性,以及英语(和其他语言)不是总是以“s”结尾的复数形式,以及有时候以“s”结尾的单词不是复数,试着提供可能的解决方案。
你可以创建一个大数组,用于复数总是用“s”结尾,另一个用于不规则复数,并用它来验证句子的每个单词。
稍后我会用一些有用的PHP示例来完成这篇文章。
我找到了一些java示例here