亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inflector.java

?? CakePHP的Eclipse插件
?? JAVA
字號:
package org.xicabin.radcake.core.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Convert word between singular and plural
 * 
 * @author Darcy Young
 */
public class Inflector {

	private static class Replacement {
		private Pattern rule;

		private String replacement;

		Replacement(Pattern rule, String replacement) {
			this.rule = rule;
			this.replacement = replacement;
		}
	}

	private static List<Replacement> plurals = new ArrayList<Replacement>();
	private static List<Replacement> singulars = new ArrayList<Replacement>();
	private static List<String> uncountables = new ArrayList<String>();
	private static Replacement underscore = null;

	public static String singularize(String plural) {
		if (uncountables.contains(plural.toLowerCase())) {
			return plural;
		}
		for (Replacement replacement : singulars) {
			Matcher matcher = replacement.rule.matcher(plural);
			if (matcher.find()) {
				return matcher.replaceFirst(replacement.replacement);
			}
		}
		return plural;
	}

	public static String pluralize(String singular) {
		if (uncountables.contains(singular.toLowerCase())) {
			return singular;
		}
		for (Replacement replacement : plurals) {
			Matcher matcher = replacement.rule.matcher(singular);
			if (matcher.find()) {
				return matcher.replaceFirst(replacement.replacement);
			}
		}
		return singular;
	}

	public static String underscorize(String camelCasedWord) {
		Matcher matcher = underscore.rule.matcher(camelCasedWord);
		if (matcher.find()) {
			return matcher.replaceFirst(underscore.replacement).toLowerCase();
		}
		return camelCasedWord;
	}

	public static void plural(Pattern rule, String replacement) {
		plurals.add(0, new Replacement(rule, replacement));
	}

	public static void singular(Pattern rule, String replacement) {
		singulars.add(0, new Replacement(rule, replacement));
	}

	public static void irregular(String singular, String plural) {
		plural(Pattern.compile("(" + singular.charAt(0) + ")"
				+ singular.substring(1) + "$", Pattern.CASE_INSENSITIVE), "$1"
				+ plural.substring(1));
		singular(Pattern.compile("(" + plural.charAt(0) + ")"
				+ plural.substring(1) + "$", Pattern.CASE_INSENSITIVE), "$1"
				+ singular.substring(1));
	}

	public static void uncountable(String[] words) {
		for (int i = 0; i < words.length; i++) {
			uncountables.add(words[i]);
		}
	}

	static {
		Inflector.underscore = new Replacement(Pattern.compile("(?<=\\w)([A-Z])"), "_$1");
		Inflector.plural(Pattern.compile("$"), "s");
		Inflector.plural(Pattern.compile("s$", Pattern.CASE_INSENSITIVE), "s");
		Inflector.plural(Pattern.compile("(ax|test)is$",
				Pattern.CASE_INSENSITIVE), "$1es");
		Inflector.plural(Pattern.compile("(octop|vir)us$",
				Pattern.CASE_INSENSITIVE), "$1i");
		Inflector.plural(Pattern.compile("(alias|status)$",
				Pattern.CASE_INSENSITIVE), "$1es");
		Inflector.plural(Pattern.compile("(bu)s$", Pattern.CASE_INSENSITIVE),
				"$1ses");
		Inflector.plural(Pattern.compile("(buffal|tomat)o$",
				Pattern.CASE_INSENSITIVE), "$1oes");
		Inflector.plural(
				Pattern.compile("([ti])um$", Pattern.CASE_INSENSITIVE), "$1a");
		Inflector.plural(Pattern.compile("sis$", Pattern.CASE_INSENSITIVE),
				"ses");
		Inflector.plural(Pattern.compile("(?:([^f])fe|([lr])f)$",
				Pattern.CASE_INSENSITIVE), "$1$2ves");
		Inflector.plural(Pattern.compile("(hive)$", Pattern.CASE_INSENSITIVE),
				"$1s");
		Inflector.plural(Pattern.compile("([^aeiouy]|qu)y$",
				Pattern.CASE_INSENSITIVE), "$1ies");
		Inflector.plural(Pattern.compile("(x|ch|ss|sh)$",
				Pattern.CASE_INSENSITIVE), "$1es");
		Inflector.plural(Pattern.compile("(matr|vert|ind)ix|ex$",
				Pattern.CASE_INSENSITIVE), "$1ices");
		Inflector.plural(Pattern.compile("([m|l])ouse$",
				Pattern.CASE_INSENSITIVE), "$1ice");
		Inflector.plural(Pattern.compile("^(ox)$", Pattern.CASE_INSENSITIVE),
				"$1en");
		Inflector.plural(Pattern.compile("(quiz)$", Pattern.CASE_INSENSITIVE),
				"$1zes");

		Inflector.singular(Pattern.compile("s$", Pattern.CASE_INSENSITIVE), "");
		Inflector.singular(
				Pattern.compile("(n)ews$", Pattern.CASE_INSENSITIVE), "$1ews");
		Inflector.singular(Pattern
				.compile("([ti])a$", Pattern.CASE_INSENSITIVE), "$1um");
		Inflector
				.singular(
						Pattern
								.compile(
										"((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$",
										Pattern.CASE_INSENSITIVE), "$1$2sis");
		Inflector.singular(Pattern.compile("(^analy)ses$",
				Pattern.CASE_INSENSITIVE), "$1sis");
		Inflector.singular(Pattern.compile("([^f])ves$",
				Pattern.CASE_INSENSITIVE), "$1fe");
		Inflector.singular(Pattern
				.compile("(hive)s$", Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern
				.compile("(tive)s$", Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern.compile("([lr])ves$",
				Pattern.CASE_INSENSITIVE), "$1f");
		Inflector.singular(Pattern.compile("([^aeiouy]|qu)ies$",
				Pattern.CASE_INSENSITIVE), "$1y");
		Inflector.singular(Pattern.compile("(s)eries$",
				Pattern.CASE_INSENSITIVE), "$1eries");
		Inflector.singular(Pattern.compile("(m)ovies$",
				Pattern.CASE_INSENSITIVE), "$1ovie");
		Inflector.singular(Pattern.compile("(x|ch|ss|sh)es$",
				Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern.compile("([m|l])ice$",
				Pattern.CASE_INSENSITIVE), "$1ouse");
		Inflector.singular(Pattern
				.compile("(bus)es$", Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern.compile("(o)es$", Pattern.CASE_INSENSITIVE),
				"$1");
		Inflector.singular(Pattern
				.compile("(shoe)s$", Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern.compile("(cris|ax|test)es$",
				Pattern.CASE_INSENSITIVE), "$1is");
		Inflector.singular(Pattern.compile("(octop|vir)i$",
				Pattern.CASE_INSENSITIVE), "$1us");
		Inflector.singular(Pattern.compile("(alias|status)es$",
				Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(
				Pattern.compile("^(ox)en", Pattern.CASE_INSENSITIVE), "$1");
		Inflector.singular(Pattern.compile("(vert|ind)ices$",
				Pattern.CASE_INSENSITIVE), "$1ex");
		Inflector.singular(Pattern.compile("(matr)ices$",
				Pattern.CASE_INSENSITIVE), "$1ix");
		Inflector.singular(Pattern.compile("(quiz)zes$",
				Pattern.CASE_INSENSITIVE), "$1");

		Inflector.irregular("person", "people");
		Inflector.irregular("man", "men");
		Inflector.irregular("child", "children");
		Inflector.irregular("sex", "sexes");
		Inflector.irregular("move", "moves");

		Inflector.uncountable(new String[] { "equipment", "information",
				"rice", "money", "species", "series", "fish", "sheep" });
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清三级视频| 国产91在线|亚洲| 国产成人精品免费看| 欧美中文字幕一区二区三区 | 91在线视频免费91| 日韩欧美一区二区在线视频| 成人欧美一区二区三区1314| 美女视频黄 久久| 欧美色网一区二区| 亚洲欧洲av在线| 国产成人亚洲综合a∨猫咪| 91精品国产综合久久久久久| 亚洲视频免费在线| 成人av在线资源网| 久久精品一区蜜桃臀影院| 蜜臀精品久久久久久蜜臀| 欧美日韩另类国产亚洲欧美一级| **网站欧美大片在线观看| 国产成人免费在线观看| 精品福利在线导航| 极品少妇一区二区| 精品久久一二三区| 人人狠狠综合久久亚洲| 欧美日韩国产一级二级| 午夜精品一区在线观看| 欧美日韩国产首页| 午夜精品一区二区三区三上悠亚| 在线观看日韩高清av| 中文字幕日韩精品一区| 成人99免费视频| 国产精品久线在线观看| 不卡av在线免费观看| 18欧美乱大交hd1984| 成人黄色综合网站| 中文字幕一区二区不卡| 99久久国产免费看| 亚洲欧美国产77777| 色哟哟国产精品免费观看| 中文字幕在线不卡一区| 99久久国产综合色|国产精品| 中文字幕在线不卡视频| 日本韩国一区二区三区| 亚洲国产欧美在线| 欧美久久婷婷综合色| 日本不卡在线视频| 久久一日本道色综合| 国产成人免费高清| 中文字幕一区二区三区av| 欧美伊人久久大香线蕉综合69 | 中文字幕欧美一| 色丁香久综合在线久综合在线观看| 一区二区三区中文字幕电影| 欧美美女黄视频| 麻豆精品国产91久久久久久| 国产午夜精品一区二区| 91亚洲午夜精品久久久久久| 午夜欧美电影在线观看| 久久奇米777| 91视频精品在这里| 日韩电影一二三区| 国产亚洲欧美一区在线观看| 91蜜桃在线免费视频| 亚洲成人激情社区| 国产调教视频一区| 欧美影院一区二区三区| 久久99日本精品| 亚洲精品国产a久久久久久| 51精品秘密在线观看| 国产成人精品免费网站| 亚洲国产aⅴ成人精品无吗| 精品国产乱码久久久久久闺蜜| 成人午夜在线视频| 日本中文字幕一区二区视频| 国产精品视频在线看| 欧美精品1区2区3区| 国产白丝精品91爽爽久久| 亚洲国产一区在线观看| 久久色在线观看| 精品视频在线免费看| 国产精品影视在线观看| 午夜伊人狠狠久久| 成人欧美一区二区三区| www成人在线观看| 91精品欧美综合在线观看最新| www.欧美色图| 国产一区二区在线影院| 亚洲动漫第一页| 亚洲欧洲一区二区三区| 欧美刺激午夜性久久久久久久| 日本高清不卡在线观看| 国产99精品国产| 蜜臀a∨国产成人精品| 亚洲欧美一区二区三区极速播放 | 欧美亚洲图片小说| 成人免费视频一区二区| 久久99最新地址| 青青青伊人色综合久久| 亚洲综合色丁香婷婷六月图片| 国产日本欧洲亚洲| 亚洲精品一区二区三区福利| 777a∨成人精品桃花网| 91国在线观看| 色天使久久综合网天天| 91在线丨porny丨国产| 丰满亚洲少妇av| 国产成人夜色高潮福利影视| 国产在线播放一区二区三区| 日本麻豆一区二区三区视频| 午夜精品久久久久影视| 一区二区成人在线视频| 国产精品免费看片| 国产精品久久精品日日| 国产三级精品三级| 久久久99免费| 26uuu另类欧美亚洲曰本| 亚洲精品在线免费观看视频| 精品国产百合女同互慰| 精品成人一区二区三区四区| 日韩欧美视频在线| www一区二区| 国产精品三级视频| 1区2区3区精品视频| 亚洲日韩欧美一区二区在线| 亚洲日本在线视频观看| 亚洲一区二区三区国产| 日韩中文字幕亚洲一区二区va在线| 视频精品一区二区| 老司机精品视频导航| 国产一区二区在线免费观看| 国产精品系列在线观看| av在线这里只有精品| 91福利社在线观看| 91精品国产手机| 久久精品人人做人人爽97| 日韩一区欧美小说| 香蕉影视欧美成人| 久久aⅴ国产欧美74aaa| 成人av影院在线| 欧美日韩中文国产| 久久蜜臀精品av| 亚洲美女淫视频| 日本aⅴ精品一区二区三区| 国产一区二区在线看| 一本色道亚洲精品aⅴ| 欧美一级爆毛片| 中文字幕一区二区视频| 三级影片在线观看欧美日韩一区二区 | 综合激情成人伊人| 午夜精品久久久久久久久| 精品亚洲免费视频| www.久久精品| 欧美成人video| ●精品国产综合乱码久久久久 | 亚洲综合色自拍一区| 久久aⅴ国产欧美74aaa| 色视频成人在线观看免| 欧美变态tickle挠乳网站| 亚洲欧洲av另类| 久久成人免费日本黄色| 91高清视频在线| 欧美激情一区在线| 日韩高清在线一区| 99热精品一区二区| 欧美tickling挠脚心丨vk| 亚洲欧美经典视频| 国产成人无遮挡在线视频| 91精品国产91热久久久做人人| 中文字幕一区二区在线观看| 国内精品伊人久久久久影院对白| 日本韩国欧美三级| 国产精品成人一区二区三区夜夜夜| 蜜臀av一区二区在线观看| 日本韩国视频一区二区| 国产精品久久午夜| 国内精品国产三级国产a久久| 欧美视频一区二| 亚洲欧美日韩一区| 成人av免费网站| 国产午夜精品美女毛片视频| 久久草av在线| 日韩视频不卡中文| 日韩成人精品在线观看| 欧美午夜精品免费| 亚洲免费av高清| 91丨porny丨国产| 国产欧美视频一区二区三区| 另类的小说在线视频另类成人小视频在线 | 国产成人超碰人人澡人人澡| 欧美成人精品高清在线播放| 天堂午夜影视日韩欧美一区二区| 色av成人天堂桃色av| 自拍偷拍国产亚洲| 99久久精品国产精品久久| 国产精品色哟哟| 99免费精品视频| 亚洲欧美综合网| 99国内精品久久| 亚洲精品第一国产综合野| 色欧美片视频在线观看| 一区二区三区在线影院|