我有一串单词,有一些像
这样的单词"Cloud", "Clouds", "Application", "Applications", "Event", "Events"
和一些像
这样的词"Access"
这是单数但最后有"s"
。我想删除复数单词,但我不能编写代码来从末尾删除s,因为它将从所有单词中删除"s"
。
我在互联网上搜索,找不到任何相关内容。
任何人都可以帮助我做到这一点的最好方法吗?
编辑:如何在我的程序中使用CakePHP?我之前从未使用它,所以没有经验。我在函数中有String变量。它说我需要安装Cake PHP,谁能告诉我如何在函数中使用它?
由于
答案 0 :(得分:6)
使用CakePHP附带的Inflector类。
debug(Inflector::singularize('People')); // will show person
http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::singularize
static Inflector :: singularize($ plural)
输入: 苹果,橘子,人,男
输出 Apple,Orange,Person,Man
老实说,我不知道它在内部是如何运作的,但它用英语单词做得很好,你甚至可以配置它来处理特殊情况。
您可以使用Inflector :: rules()定义规则的例外:
Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables'));
Inflector::rules('plural', array(
'rules' => array('/^(inflect)ors$/i' => '\1ables'),
'uninflected' => array('dontinflectme'),
'irregular' => array('red' => 'redlings')
));
Inflector::rules('transliteration', array('/å/' => 'aa'));
答案 1 :(得分:3)
用英语做这件事并不容易:考虑Clouds
=> Cloud
,Fortresses
=> Fortress
,Ladies
=> Lady
,Sheep
=> Sheep
...只是简单地剥离s
可能导致问题(例如Lady's
)...您可能要考虑使用Porter Stemmer或类似的