這裡是PHP的實現方法,其實在csharp或java中,實現方式都是差不多的。
/**<br /> * wirror: pluralize a string<br /> * @param $string<br /> */<br /> function pluralize( $string )<br /> {</p><p> $plural = array(<br /> array( '/(quiz)$/i', "$1zes" ),<br /> array( '/^(ox)$/i', "$1en" ),<br /> array( '/([m|l])ouse$/i', "$1ice" ),<br /> array( '/(matr|vert|ind)ix|ex$/i', "$1ices" ),<br /> array( '/(x|ch|ss|sh)$/i', "$1es" ),<br /> array( '/([^aeiouy]|qu)y$/i', "$1ies" ),<br /> array( '/([^aeiouy]|qu)ies$/i', "$1y" ),<br /> array( '/(hive)$/i', "$1s" ),<br /> array( '/(?:([^f])fe|([lr])f)$/i', "$1$2ves" ),<br /> array( '/sis$/i', "ses" ),<br /> array( '/([ti])um$/i', "$1a" ),<br /> array( '/(buffal|tomat)o$/i', "$1oes" ),<br /> array( '/(bu)s$/i', "$1ses" ),<br /> array( '/(alias|status)$/i', "$1es" ),<br /> array( '/(octop|vir)us$/i', "$1i" ),<br /> array( '/(ax|test)is$/i', "$1es" ),<br /> array( '/s$/i', "s" ),<br /> array( '/$/', "s" )<br /> );</p><p> $singular = array(<br /> array("/s$/", ""),<br /> array("/(n)ews$/", "$1ews"),<br /> array("/([ti])a$/", "$1um"),<br /> array("/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/", "$1$2sis"),<br /> array("/(^analy)ses$/", "$1sis"),<br /> array("/([^f])ves$/", "$1fe"),<br /> array("/(hive)s$/", "$1"),<br /> array("/(tive)s$/", "$1"),<br /> array("/([lr])ves$/", "$1f"),<br /> array("/([^aeiouy]|qu)ies$/", "$1y"),<br /> array("/(s)eries$/", "$1eries"),<br /> array("/(m)ovies$/", "$1ovie"),<br /> array("/(x|ch|ss|sh)es$/", "$1"),<br /> array("/([m|l])ice$/", "$1ouse"),<br /> array("/(bus)es$/", "$1"),<br /> array("/(o)es$/", "$1"),<br /> array("/(shoe)s$/", "$1"),<br /> array("/(cris|ax|test)es$/", "$1is"),<br /> array("/([octop|vir])i$/", "$1us"),<br /> array("/(alias|status)es$/", "$1"),<br /> array("/^(ox)en/", "$1"),<br /> array("/(vert|ind)ices$/", "$1ex"),<br /> array("/(matr)ices$/", "$1ix"),<br /> array("/(quiz)zes$/", "$1")<br /> );</p><p> $irregular = array(<br /> array( 'move', 'moves' ),<br /> array( 'sex', 'sexes' ),<br /> array( 'child', 'children' ),<br /> array( 'man', 'men' ),<br /> array( 'person', 'people' )<br /> );</p><p> $uncountable = array(<br /> 'sheep',<br /> 'fish',<br /> 'series',<br /> 'species',<br /> 'money',<br /> 'rice',<br /> 'information',<br /> 'equipment'<br /> );</p><p> // save some time in the case that singular and plural are the same<br /> if ( in_array( strtolower( $string ), $uncountable ) )<br /> return $string;</p><p> // check for irregular singular forms<br /> foreach ( $irregular as $noun )<br /> {<br /> if ( strtolower( $string ) == $noun[0] )<br /> return $noun[1];<br /> }</p><p> // check for matches using regular expressions<br /> foreach ( $plural as $pattern )<br /> {<br /> if ( preg_match( $pattern[0], $string ) )<br /> return preg_replace( $pattern[0], $pattern[1], $string );<br /> }</p><p> return $string;<br /> }