Browse Source

doc:文档更新

wangzaijun 1 year ago
parent
commit
729112655b

+ 17 - 31
pom.xml

@@ -6,75 +6,61 @@
 
     <groupId>org.smppw</groupId>
     <artifactId>data-calc</artifactId>
-    <version>0.1.1-SNAPSHOT</version>
+    <version>0.1.2-SNAPSHOT</version>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
+        <lombok-version>1.18.26</lombok-version>
         <hutool-version>5.8.12</hutool-version>
+        <common-math3-version>3.6.1</common-math3-version>
+        <common-lang3-version>3.12.0</common-lang3-version>
+        <caffeine-version>2.8.8</caffeine-version>
+        <joda-version>2.10.13</joda-version>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.26</version>
+            <version>${lombok-version}</version>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-core</artifactId>
             <version>${hutool-version}</version>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-json</artifactId>
             <version>${hutool-version}</version>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.12.0</version>
+            <version>${common-lang3-version}</version>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>joda-time</groupId>
             <artifactId>joda-time</artifactId>
-            <version>2.10.13</version>
-        </dependency>
-        <dependency>
-            <groupId>com.belerweb</groupId>
-            <artifactId>pinyin4j</artifactId>
-            <version>2.5.1</version>
+            <version>${joda-version}</version>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.github.ben-manes.caffeine</groupId>
             <artifactId>caffeine</artifactId>
-            <version>2.8.8</version>
+            <version>${caffeine-version}</version>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-math3</artifactId>
-            <version>3.6.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>2.17.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>2.17.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-jul</artifactId>
-            <version>2.17.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jul-to-slf4j</artifactId>
-            <version>1.7.36</version>
+            <version>${common-math3-version}</version>
+            <optional>true</optional>
         </dependency>
     </dependencies>
 </project>

+ 2 - 0
readme.md

@@ -0,0 +1,2 @@
+# 排排网 核心计算包,包括公共类、方法包
+

+ 6 - 8
src/main/java/com/smppw/utils/DateUtil.java

@@ -7,7 +7,6 @@ import com.smppw.common.rollrange.date.DateConvertor;
 import com.smppw.common.rollrange.date.DateConvertorImpl;
 import com.smppw.common.rollrange.date.DateVerifier;
 import com.smppw.common.rollrange.date.PeriodPosition;
-import lombok.extern.slf4j.Slf4j;
 import org.joda.time.*;
 
 import java.math.BigDecimal;
@@ -18,7 +17,6 @@ import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-@Slf4j
 public class DateUtil {
 
     public static final Map<Integer,String> charMap = new HashMap();
@@ -127,7 +125,7 @@ public class DateUtil {
                 }
             }
         } else {
-            log.error("错误的日期格式"+dateString);
+//            log.error("错误的日期格式"+dateString);
         }
         Date date = null;
         try {
@@ -168,7 +166,7 @@ public class DateUtil {
         try {
             strDate = sdf.format(date);
         } catch (Exception e) {
-            log.error("时间转换报错", e.getMessage(), e);
+//            log.error("时间转换报错", e.getMessage(), e);
         }
         return strDate;
     }
@@ -184,7 +182,7 @@ public class DateUtil {
         try {
             date = new SimpleDateFormat(pattern).parse(strDate);
         } catch (ParseException e) {
-            log.error("时间转换报错", e.getMessage(), e);
+//            log.error("时间转换报错", e.getMessage(), e);
         }
         return date;
     }
@@ -294,7 +292,7 @@ public class DateUtil {
             calendar.add(Calendar.YEAR, amount);
             return sdf.format(calendar.getTime());
         } catch (Exception e) {
-            log.error("addMonth format Exception: {}", e.getMessage(), e);
+//            log.error("addMonth format Exception: {}", e.getMessage(), e);
             return null;
         }
     }
@@ -318,7 +316,7 @@ public class DateUtil {
             calendar.add(Calendar.MONTH, amount);
             return sdf.format(calendar.getTime());
         } catch (Exception e) {
-            log.error("addMonth format Exception: {}", e.getMessage(), e);
+//            log.error("addMonth format Exception: {}", e.getMessage(), e);
             return null;
         }
     }
@@ -339,7 +337,7 @@ public class DateUtil {
             calendar.add(Calendar.DAY_OF_YEAR, amount);
             return calendar.getTime();
         } catch (Exception e) {
-            log.error("addMonth format Exception: {}", e.getMessage(), e);
+//            log.error("addMonth format Exception: {}", e.getMessage(), e);
             return null;
         }
     }

+ 2 - 4
src/main/java/com/smppw/utils/IndicatorCalc.java

@@ -10,7 +10,6 @@ import com.smppw.common.pojo.enums.TimeRange;
 import com.smppw.core.reta.IndicatorFactory;
 import com.smppw.core.reta.Rate;
 import com.smppw.core.reta.calc.PerformanceConsistency;
-import lombok.extern.slf4j.Slf4j;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 
@@ -23,7 +22,6 @@ import java.util.Map;
 /**
  * @author lzj
  */
-@Slf4j
 public class IndicatorCalc {
     public static List<Double> getFundRetList(List<CompoundRet> list) {
         List<Double> doubleList = new ArrayList<>();
@@ -48,7 +46,7 @@ public class IndicatorCalc {
             try {
                 navIndicatorValue = rate.calc(navList);
             } catch (Exception e) {
-                log.error("计算异常Exception",e.getMessage(),e);
+//                log.error("计算异常Exception",e.getMessage(),e);
                 navIndicatorValue = null;
             }
 
@@ -129,7 +127,7 @@ public class IndicatorCalc {
                 try {
                     value = rate.calc(retList, frequency, ifAnnualize);
                 } catch (Exception e) {
-                    log.info("计算异常Exception",e.getMessage(),e);
+//                    log.info("计算异常Exception",e.getMessage(),e);
                     value = null;
                 }
                 if (value != null && (value.isNaN() || value.isInfinite() )) {

+ 0 - 490
src/main/java/com/smppw/utils/PinyinUtils.java

@@ -1,490 +0,0 @@
-package com.smppw.utils;
-
-import cn.hutool.core.io.FileUtil;
-import net.sourceforge.pinyin4j.PinyinHelper;
-import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
-import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
-import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
-import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.*;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * 中文转拼音
- * @author William
- */
-public class PinyinUtils {
-	enum Number {
-		zero(0, '零', "ling", "LING", 'l', 'L'), /**/
-		one(1, '一', "yi", "YI", 'y', 'Y'), /**/
-		two(2, '二', "er", "ER", 'e', 'E'), /**/
-		three(3, '三', "san", "SAN", 's', 'S'), /**/
-		four(4, '四', "si", "SI", 's', 'S'), /**/
-		five(5, '五', "wu", "WU", 'w', 'W'), /**/
-		six(6, '六', "liu", "LIU", 'l', 'L'), /**/
-		seven(7, '七', "qi", "QI", 'q', 'Q'), /**/
-		eight(8, '八', "ba", "BA", 'b', 'B'), /**/
-		nine(9, '九', "jiu", "JIU", 'j', 'J');
-
-		private int num;
-		private char cn;
-		private String pingYin;
-		private String pingYinUpper;
-		private char firstLetter;
-		private char firstLetterUpper;
-
-		Number(int num, char cn, String pingYin, String pingYinUpper, char firstLetter, char firstLetterUpper) {
-			this.num = num;
-			this.cn = cn;
-			this.pingYin = pingYin;
-			this.pingYinUpper = pingYinUpper;
-			this.firstLetter = firstLetter;
-			this.firstLetterUpper = firstLetterUpper;
-		}
-
-		public int getNum() {
-			return num;
-		}
-
-		public char getCn() {
-			return cn;
-		}
-
-		public String getPingYin() {
-			return pingYin;
-		}
-
-		public String getPingYinUpper() {
-			return pingYinUpper;
-		}
-
-		public char getFirstLetter() {
-			return firstLetter;
-		}
-
-		public char getFirstLetterUpper() {
-			return firstLetterUpper;
-		}
-	}
-
-	private static final Map<String, Number> numberMap = new HashMap<>();
-	static {
-		for (Number n : Number.values()) {
-			numberMap.put(n.num + "", n);
-		}
-	}
-
-	private static Map<String, String> dictionary = new HashMap<String, String>();
-	// 加载多音字词典
-	static {
-		try {
-			// todo 验证
-			File file = FileUtil.file("duoyinzi_pinyin.txt");
-			if (file.exists()) {
-				BufferedReader br = null;
-				try {
-					br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
-					String line = null;
-					while ((line = br.readLine()) != null) {
-						String[] arr = line.split("#");
-						if (arr[1] != null) {
-							String[] sems = arr[1].trim().split("/");
-							for (String sem : sems) {
-								if (sem != null) {
-									dictionary.put(sem, arr[0]);
-								}
-							}
-						}
-					}
-				} catch (UnsupportedEncodingException e) {
-					e.printStackTrace();
-				} catch (IOException e) {
-					e.printStackTrace();
-				} finally {
-					if (br != null) {
-						try {
-							br.close();
-						} catch (IOException e) {
-							e.printStackTrace();
-						}
-					}
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * 判断入参是否含中文字符
-	 */
-	public static boolean containChinese(String str) {
-		if(StringUtils.isEmpty(str))
-			return false;
-		Matcher m = Pattern.compile("[\\u4E00-\\u9FA5]").matcher(str);
-		return m.find();
-	}
-
-
-	/**  返回拼音首字母, 字母全部转小写*/
-	public static String getFirstLetterPinyin(String chinese) {
-		if(StringUtils.isEmpty(chinese))
-			return "";
-
-		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写格式
-		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 有无音标
-		format.setVCharType(HanyuPinyinVCharType.WITH_V);
-
-		char[] input = chinese.trim().toCharArray();
-
-		StringBuilder output = new StringBuilder();
-		try {
-			for (int i = 0; i < input.length; i++) {
-				char word = input[i];
-
-				// ascii 48~57 means 0~9
-				if (word >= 48 && word <= 57) {
-					Number number = numberMap.get(word + "");
-					output.append(number.getFirstLetter());
-					continue;
-				}
-
-				// ascii 65~90 means A~Z
-				if (word >= 65 && word <= 90) {
-					output.append(Character.toString(word).toLowerCase());
-					continue;
-				}
-
-				// ascii 97~122 means a~z
-				if (word >= 97 && word <= 122) {
-					output.append(word);
-					continue;
-				}
-
-				if (Character.toString(word).matches("[\\u4E00-\\u9FA5]+")) {
-					String[] pingYinArray = PinyinHelper.toHanyuPinyinStringArray(word, format);
-
-					//特殊情况,字库里没有该字
-					if (0 == pingYinArray.length) {
-						String py = dictionary.get(Character.toString(word));
-						if (null != py) {
-							output.append(py.charAt(0));
-						}
-						continue;
-					}
-
-					if (input.length == 1) {
-						output.append(pingYinArray[0].charAt(0));
-						continue;
-					}
-
-					String pinyin = pingYinArray[0];
-					boolean matchDic = false;
-
-					if (i < input.length - 1) {
-						String dic = Character.toString(word) + input[i + 1];
-
-						for (String py : pingYinArray) {
-							if (py.equals(dictionary.get(dic))) {
-								pinyin = py;
-								matchDic = true;
-								break;
-							}
-
-							if (py.equals(dictionary.get(Character.toString(word)))) {
-								pinyin = py;
-								break;
-							}
-						}
-					}
-
-					if (!matchDic && i > 0) {
-						String dic = input[i - 1] + Character.toString(word);
-
-						for (String py : pingYinArray) {
-							if (py.equals(dictionary.get(dic))
-									|| py.equals(dictionary.get(Character.toString(input[i])))) {
-								pinyin = py;
-								break;
-							}
-						}
-					}
-
-					output.append(pinyin.charAt(0));
-				}
-			}
-		} catch (BadHanyuPinyinOutputFormatCombination e1) {
-			e1.printStackTrace();
-			return "-";
-		}
-
-		return output.toString();
-	}
-
-	/**  返回拼音全拼, 字母全部转小写*/
-	public static String getFullPinyin(String chinese) {
-		if(StringUtils.isEmpty(chinese))
-			return "";
-		
-		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写格式
-		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 有无音标
-		format.setVCharType(HanyuPinyinVCharType.WITH_V);
-
-		char[] input = chinese.trim().toCharArray();
-
-		StringBuilder output = new StringBuilder();
-		try {
-			for (int i = 0; i < input.length; i++) {
-				char word = input[i];
-
-				// ascii 48~57 means 0~9
-				if (word >= 48 && word <= 57) {
-					Number number = numberMap.get(word + "");
-					output.append(number.getPingYin());
-					continue;
-				}
-
-				// ascii 65~90 means A~Z
-				if (word >= 65 && word <= 90) {
-					output.append(Character.toString(word).toLowerCase());
-					continue;
-				}
-
-				// ascii 97~122 means a~z
-				if (word >= 97 && word <= 122) {
-					output.append(word);
-					continue;
-				}
-
-				if (Character.toString(word).matches("[\\u4E00-\\u9FA5]+")) {
-					String[] pingYinArray = PinyinHelper.toHanyuPinyinStringArray(word, format);
-
-					//特殊情况,字库里没有该字
-					if (0 == pingYinArray.length) {
-						String py = dictionary.get(Character.toString(word));
-						if (null != py) {
-							output.append(py);
-						}
-						continue;
-					}
-
-					if (input.length == 1) {
-						output.append(pingYinArray[0]);
-						continue;
-					}
-					
-					String pinyin = pingYinArray[0];
-					boolean matchDic = false;
-					if (i < input.length - 1) {
-						String dic = Character.toString(word) + input[i + 1];
-
-						for (String py : pingYinArray) {
-
-							if (py.equals(dictionary.get(dic))) {
-								matchDic = true;
-								pinyin = py;
-								break;
-							}
-
-							if (py.equals(dictionary.get(Character.toString(word)))) {
-								pinyin = py;
-								break;
-							}
-						}
-					}
-
-					if (!matchDic && i > 0) {
-						String dic = input[i - 1] + Character.toString(word);
-
-						for (String py : pingYinArray) {
-							if (py.equals(dictionary.get(dic))
-									|| py.equals(dictionary.get(Character.toString(input[i])))) {
-								pinyin = py;
-								break;
-							}
-						}
-					}
-
-					output.append(pinyin);
-				}
-			}
-		} catch (BadHanyuPinyinOutputFormatCombination e1) {
-			e1.printStackTrace();
-			return "-";
-		}
-
-		return output.toString();
-	}
-
-	/**
-	 * 返回拼音首字母
-	 * @param chinese 中文
-	 * @param keepAllPolyphone 保留所有多音字,不保留则返回所有多音字中默认第一个
-	 * @return
-	 */
-	@SuppressWarnings("unused")
-	private static String pinyinFirstLetter(String chinese, boolean keepAllPolyphone) {
-		boolean filteSpecialChar = true;
-		boolean replaceNumber = true;
-		boolean isUpper = false;
-		boolean isFullPingYin = false;
-		return pinyin(chinese, filteSpecialChar, replaceNumber, isUpper, isFullPingYin, keepAllPolyphone);
-	}
-
-	/**
-	 * @param chinese 中文
-	 * @param filteSpecialChar 是否过滤特殊字符
-	 * @param replaceNumber 是否替换阿拉伯数字为中文
-	 * @param isUpper 是否大写
-	 * @param isFullPingYin 是否全拼
-	 * @param keepAllPolyphone 保留所有多音字,不保留则返回所有多音字中默认第一个
-	 * @return
-	 */
-	public static String pinyin(String chinese, boolean filteSpecialChar, boolean replaceNumber, boolean isUpper, boolean isFullPingYin, boolean keepAllPolyphone) {
-		if (null == chinese || chinese.trim().length() == 0)
-			return chinese;
-
-		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
-		format.setVCharType(HanyuPinyinVCharType.WITH_V);
-
-		if (isUpper)
-			format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
-		else
-			format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
-
-		char[] input = chinese.trim().toCharArray();
-
-		List<List<String>> list = new ArrayList<>(input.length);
-
-		try {
-			for (int i = 0; i < input.length; i++) {
-				char word = input[i];
-
-				List<String> polyphoneList = new ArrayList<>();
-
-				// ascii 48~57 means 0~9
-				if (word >= 48 && word <= 57) {
-					if (replaceNumber) {
-						Number number = numberMap.get(word + "");
-
-						if (!isUpper && !isFullPingYin)
-							polyphoneList.add(number.getFirstLetter() + "");
-						else if (!isUpper && isFullPingYin)
-							polyphoneList.add(number.getPingYin());
-						else if (isUpper && isFullPingYin)
-							polyphoneList.add(number.getPingYinUpper());
-						else
-							polyphoneList.add(number.getFirstLetterUpper() + "");
-
-					} else
-						polyphoneList.add(word + "");
-
-					list.add(polyphoneList);
-					continue;
-				}
-
-				// ascii 65~90 means A~Z
-				if (word >= 65 && word <= 90) {
-					if (isUpper)
-						polyphoneList.add(word + "");
-					else
-						polyphoneList.add(Character.toString(word).toLowerCase());
-
-					list.add(polyphoneList);
-					continue;
-				}
-
-				// ascii 97~122 means a~z
-				if (word >= 97 && word <= 122) {
-					if (isUpper)
-						polyphoneList.add(Character.toString(word).toUpperCase());
-					else
-						polyphoneList.add(word + "");
-
-					list.add(polyphoneList);
-					continue;
-				}
-
-				// if it is chinese
-				if (Character.toString(word).matches("[\\u4E00-\\u9FA5]+")) {
-					String[] pingYinArray = PinyinHelper.toHanyuPinyinStringArray(word, format);
-
-					if (keepAllPolyphone) {
-						//去重
-						Set<String> set = new HashSet<>();
-						for (String s : pingYinArray)
-							set.add(s);
-
-						Iterator<String> iterator = set.iterator();
-						while (iterator.hasNext()) {
-							String py = iterator.next();
-							if (isFullPingYin)
-								polyphoneList.add(py);
-							else if (!polyphoneList.contains(py.charAt(0) + ""))
-								polyphoneList.add(py.charAt(0) + "");
-						}
-					} else {
-						if (isFullPingYin)
-							polyphoneList.add(pingYinArray[0]);
-						else
-							polyphoneList.add(pingYinArray[0].charAt(0) + "");
-					}
-
-					list.add(polyphoneList);
-					continue;
-				}
-
-				// it is a special character
-				if (!filteSpecialChar) {
-					polyphoneList.add(Character.toString(word));
-					list.add(polyphoneList);
-				}
-			}
-		} catch (BadHanyuPinyinOutputFormatCombination e) {
-			e.printStackTrace();
-
-			return "-";
-		}
-
-		if (0 == list.size())
-			return "";
-
-		//全排列输出
-		List<String> theList = list.get(0);
-		for (int i = 1; i < list.size(); i++) {
-			theList = combile(theList, list.get(i));
-		}
-		return String.join(",", theList);
-
-		//正则输出
-		//		StringBuilder output = new StringBuilder();
-		//		for (int i = 0; i < list.size(); i++) {
-		//			List<String> polyphone = list.get(i);
-		//
-		//			if (polyphone.size() > 1)
-		//				output.append("[").append(String.join("", polyphone)).append("]");
-		//			else
-		//				output.append(polyphone.get(0));
-		//		}
-		//		return output.toString();
-	}
-
-	private static List<String> combile(List<String> aList, List<String> bList) {
-		List<String> cList = new ArrayList<>(aList.size() * bList.size());
-		for (int i = 0; i < aList.size(); i++) {
-			for (int j = 0; j < bList.size(); j++) {
-				cList.add(aList.get(i) + bList.get(j));
-			}
-		}
-		return cList;
-	}
-
-}

+ 0 - 297
src/main/resources/duoyinzi_pinyin.txt

@@ -1,297 +0,0 @@
-a#阿
-ao#拗口/违拗/拗断/执拗/拗口/拗口风/拗口令/拗曲/拗性/拗折/警拗
-ai#艾
-bang#膀/磅/蚌
-ba#扒
-bai#叔伯/百/柏杨/㧳/梵呗/呗佛/呗音/呗唱/呗偈/呗声/呗赞/赞呗
-bao#剥皮/薄/暴/堡/曝
-bei#呗
-beng#蚌埠
-bi#复辟/臂/秘鲁/泌阳
-bing#屏息/屏弃/屏气/屏除/屏声
-bian#扁/便/便宜坊
-bo#薄荷/单薄/伯/泊/波/柏/萝卜/孛
-bu#卜/柨
-can#参
-cang#藏/欌
-cen#参差
-ceng#噌
-cha#差/刹那/宝刹/一刹/查/碴/喳喳/喀喳
-chai#公差/差役/专差/官差/听差/美差/办差/差事/差使/肥差/当差/钦差/苦差/出差
-chan#颤/单于/禅
-chang#长/厂
-chao#嘲/焯
-che#工尺/车
-chen#称职/匀称/称心/相称/对称
-cheng#称/乘/澄/噌吰/橙 秤/盛满/盛器/盛饭
-chu#畜
-chui#椎心
-chuai#揣
-chuan#传
-chi#匙/尺/吃
-chong#重庆/重重/虫
-chou#臭/帱
-chuang#经幢
-chuo#绰
-ci#参差/鳞差/伺候/龟兹
-cuan#攒聚/攒动/攒集/攒宫/攒所
-cuo#撮儿/撮要/撮合
-da#大/嗒
-dao#叨/帱载/帱察
-dai#大夫
-dan#单/弹/掸/澹
-dang#铛
-de#的/得
-di#堤/底/怎的/有的/目的/标的/打的/的确/有的放/的卢/矢之的/言中的/语中的/的士/地/提防/快的/美的
-diao#蓝调/调调/音调/论调/格调/调令/低调/笔调/基调/强调/声调/滥调/老调/色调/单调/腔调/跑调/曲调/步调/语调/主调/情调
-ding#丁
-du#读/都/度
-dou#全都/句读
-duo#舵/测度/忖度/揣度/猜度
-dun#粮囤/盾/顿/沌/敦
-e#阿谀/阿胶/阿弥/恶/擜
-er#儿
-fan#番
-feng#冯
-fei#婔
-fo#佛
-fu#仿佛/果脯/罘/莩
-fou#否
-fiao#覅
-ga#咖喱/伽马/嘎/戛纳
-gai#盖
-gao#告
-gang#扛鼎
-ge#革/蛤蚧/文蛤/蛤蜊/咯
-gei#给
-geng#脖颈
-gong#女红/共
-gu#谷/中鹄/鼓
-gui#龟/柜/硅/倭傀/傀异/傀然/傀垒/傀怪/傀卓/傀奇/傀伟/傀民/傀俄/琦傀/奇傀
-gua#呱
-guan#纶巾/东莞
-guang#广
-ha#蛤/哈/虾蟆
-hai#还/嗨/咳声/咳笑
-hao#貉子/貉绒
-hang#夯/总行/分行/支行/行业/排行/行情/央行/商行/外行/银行/中行/交行/招行/农行/工行/建行/商行/酒行/麻行/琴行/行业/同行/行列/行货/行会/行家/巷道/引吭/扼吭/批吭/搤吭/高吭/喉吭/咔吭/絶吭/吭嗌/吭咽/吭首
-he#和/合/核/鶴/猲
-heng#道行/涥
-hu#鹄/水浒/嗀/唬
-hua#滑/呚/椛
-huan#归还/放还/奉还/圜
-hui#会/浍河/媈/灳/哕/瑗珲
-hong#红/虹
-huo#软和/热和/暖和
-hun#尡/珲
-ji#病革/给养/自给/给水/薪给/给予/供给/稽/缉/藉/奇数/亟/诘屈/荠菜/愱
-jia#雪茄/伽/家/价/贾/戛
-jian#见/浅浅
-jiang#降
-jiao#嚼舌/嚼字/嚼蜡/角/剿/饺/脚/蕉/矫/睡觉/侥/校对/校验/校正/校准/审校/校场/校核/校勘/校订/校阅/校样
-jie#解/慰藉/蕴藉/诘/媘/煯
-jin#矜/劲/禁/琻
-jing#颈/景/强劲/劲风/劲旅/劲敌/劲射/苍劲/遒劲/劲草
-jiong#炅
-ju#咀/居/桔/句/婮
-jun#均
-juan#棚圈/圈养/猪圈/羊圈
-jue#主角/角色/旦角/女角/丑角/角力/名角/配角/嚼/觉/䏐
-jun#龟裂/俊
-ka#咖/卡/喀
-kai#楷
-kang#扛
-ke#咳/壳
-keng#吭
-kuai#会计/财会/浍
-kui#傀
-kuo#括
-la#癞痢/腊/蜡
-lai#癞疮/癞子/癞蛤/癞皮
-lao#积潦/络子/落枕/落价/粩/姥
-le#乐/勒/了
-lei#勒紧
-lo#然咯
-lou#佝偻/泄露/露面/露脸/露骨/露底/露馅/露一手/露相/露马脚/露怯
-long#里弄/弄堂/泷
-li#跞/礼/櫔/栃
-liao#了解/了结/明了/了得/末了/未了/了如/潦/撩
-liang#靓/俩
-lie#挘
-lin#崊
-ling#霗/令
-liu#六/遛
-lu#碌/陆/露
-luo#络/落/漯/囖/洜/泺
-lv#率/绿
-lve#鋢/稤
-lun#纶
-ma#嫲/抹布/抹脸/抹桌子/摩挲
-mai#埋
-man#埋怨/蔓
-mai#脉
-mang#氓/芒
-mao#冒
-me#嚒
-men#椚
-meng#群氓/盟/癦
-mei#没/旀
-mo#淹没/没收/出没/沉没/没落/吞没/覆没/没入/埋没/鬼没/隐没/湮没/辱没/脉脉/模/摩/抹
-mou#绸缪/牟
-mi#秘/泌尿/分泌/谜/檷枸
-mian#渑
-ming#掵
-miu#谬/谬论/纰缪
-mu#大模/字模/模板/模样/模具/装模/模子/牟尼/子牟/夷牟/悬牟/相牟/头牟/宾牟/曹牟/岑牟/兜牟/卢牟/弥牟/牟食/牟槊/牟衫/牟光/牟牟/牟甲
-na#哪/娜/那
-nao#臑
-nan#南
-ne#哪吒/呢
-nei#氞
-neus#莻
-nong#弄/燶
-ni#毛呢/花呢/呢绒/线呢/呢料/呢子/呢喃/溺/檷
-niao#尿/鸟/便溺
-nian#粘膜/粘度/粘土/粘合剂/粘液/粘稠/粘合/粘着/粘结/粘性/粘附/不粘锅/粘糊/粘虫/粘聚/粘滞/焾/哖
-niang#酿
-nin#脌
-ning#倿/拧
-niu#拗/汼
-nu#努
-nuo#婀娜/袅娜/喏
-nv#女
-nve#疟/硸
-o#喔/筽
-ou#膒
-pa#扒手/扒窃/扒外/扒分/扒糕/扒灰/扒犁/扒龙/扒搂/扒山虎/扒艇
-pai#派/迫击/迫击炮
-pao#刨/炮/萢
-pan#番禺
-pang#胖/膀/磅
-pei#蓜
-pi#辟/否极/臧否/龙陂/芘
-pian#扁舟/便宜/魸
-piao#朴姓/饿莩/饥莩/葭莩
-pin#穦
-ping#屏/苹/冯河
-po#湖泊/血泊 /迫/朴刀/坡/陂
-pu#一曝十寒/里堡/十里堡/脯/朴/曝晒/瀑/埔
-qi#期/其/泣/祇
-qiu#龟兹/湭
-qi#稽首/缉鞋/栖/奇/漆/齐
-qia#卡脖/卡子/关卡/卡壳/哨卡/边卡/发卡/峠
-qiao#雀盲/雀子/地壳/甲壳/躯壳
-qian#纤/乾/浅
-qiang#强/㛨/㩖/䅚/䵁
-qie#茄/趔趄/聺/籡
-qin#亲/沁
-qing#干亲/亲家
-qiong#熍
-qu#区/趣/爠
-quan#圈/券
-que#雀/炔
-re#声喏/唱喏
-rong#嬫
-ruo#若/嵶
-saeng#栍
-sang#槡
-sai#塞/嘥
-sao#螦
-se#堵塞/搪塞/茅塞/闭塞/鼻塞/梗塞/阻塞/淤塞/拥塞/哽塞/色
-sha#莎/刹车/急刹/厦/杉木/杉篙
-shai#色子
-shao#勺/红苕
-shan#姓单/单县/杉/敾/禅让/受禅/禅变/禅代/禅诰
-shang#衣裳
-she#拾级/折本/射/蛇
-shen#沙参/野参/参王/人参/红参/丹参/山参/海参/鹿参/什么/身/沈/桑椹/食椹/烂椹/木椹
-sheng#野乘/千乘/史乘/省/晟/盛/陹/渑水
-shi#钥匙/什/识/似的/食/石/氏/拾/适/瑡
-shiwa#瓧
-shuai#表率/率性/率直/率真/粗率/率领/轻率/直率/草率/大率/坦率/衰
-shuang#泷水/鏯
-shu#属/数/术/熟
-shui#游说
-shuo#数见/说
-si#伺/似/思
-sou#蓃/摗
-su#宿/鯂
-sui#尿泡
-ta#拓片/拓印/拓本/拓墨/拓写/拓手/拓工/碑拓/疲沓/拖沓/杂沓/沓/塔/鸿塔
-tang#汤/镗
-tao#陶
-tan#反弹/弹性/弹簧/弹力/弹奏/弹跳/弹指/弹劾/弹唱/弹射/弹性体/吹弹/评弹/乱弹琴/弹压/弹指/弹簧/弹冠/弹雀/弹雀/弹丝/弹丸/澹台
-te#脦
-teng#虅
-ti#提/体
-tiao#调/苕
-ting#町/听
-tong#通
-tu#迌
-tuan#湪
-tui#褪
-tuo#拓/袥
-tun#囤/屯
-wei#尾/蔚/圩堤/圩垸/圩田/圩子/赶圩/歌圩
-weng#攚
-wu#无/可恶/交恶/好恶/厌恶/憎恶/嫌恶/痛恶/深恶/兀
-wan#藤蔓/枝蔓/根蔓/蔓草/瓜蔓/蔓儿/莞/万/百万/皖
-wang#亡
-wai#崴
-xia#虾/吓/夏/厦门/厦大/唬杀
-xi#栖/系/蹊/洗/溪/戏/焁/铣/褶衣/褶裤
-xiao#校/切削/削面/刀削/刮削
-xian#纤细/光纤/纤巧/纤柔/纤小/纤维/纤瘦/纤纤/化纤/纤秀/棉纤/纤尘/铣铁/金铣
-xiang#投降/巷
-xie#解数/出血/采血/换血/血糊/尿血/淤血/放血/血晕/血淋/便血/吐血/咯血/叶韵/蝎/蝎子/邪/猲猲
-xin#嬜/邤
-xiu#铜臭/乳臭/成宿/星宿/璓
-xin#馨/信/鸿信
-xing#深省/省视/内省/不省人事/省悟/省察/行/荥
-xiong#匂
-xu#牧畜/畜产/畜牧/畜养/并畜/畜锐/吁/圩/浒
-xuan#箮
-xue#削/血/樰
-xun#荨/寻
-ya#琊
-yao#钥/耀/曜/佋侥/侥觎/侥僺/侥利/侥傒/侥觊/侥会/侥滥/侥望/侥求/侥竞/侥薄/侥躐/侥取/侥奇/侥忝/侥速/侥冀/侥冒/疟子
-yan#咽/殷红/朱殷/腌/烟/曕
-ye#液/抽咽/哽咽/咽炎/呜咽/幽咽/悲咽/叶/葉/璍/潱/拽步/拽扶/拽扎
-yi#自艾/遗/屹/嬄/噫
-yin#殷/栶
-ying#荥经/緓/灜
-yo#杭育
-yong#涌/硧
-you#牗
-yu#余/呼吁/吁请/吁求/育/熨帖/熨烫/於
-yuan#员/茒/圜丘
-yun#熨
-yue#约/乐音/器乐/乐律/乐章/音乐/乐理/民乐/乐队/声乐/奏乐/弦乐/乐坛/管乐/配乐/乐曲/乐谱/锁钥/密钥/乐团/乐器/嬳/咽哕/唾哕/发哕/干哕/哕吐/哕饭/哕呕/哕息/哕厥/哕噫/哕逆/哕咽/哕骂/哕心/哕喈/口哕/呕哕
-za#绑扎/结扎/包扎/捆扎/咱家
-zan#攒/咱
-zang#宝藏/藏历/藏文/藏语/藏青/藏族/藏医/藏药/藏蓝/西藏
-zai#牛仔/龟仔/龙仔/鼻仔/羊仔/仔仔/麻仔/麵包仔/麦旺仔/鸿仔/煲仔/福仔/畠
-zao#栆
-ze#择
-zeng#曾/曾国藩/曾孙/曾祖父/曾祖/曾祖母/曾孙女/曾巩/囎/缯
-zong#综/繌
-zha#扎/柞狭/柞薪/柞子/柞鄂/柞叶/柞撒/槱柞/一柞/五柞宫/五柞/雠柞/芟柞/蜡祭/喳
-zhai#宅/夈/择席/择菜
-zhan#粘
-zhang#列车长/成长/行长/村长/镇长/乡长/区长/县长/市长/省长/会长/班长/排长/连长/营长/团长/旅长/师长/军长/委员长/局长/厅长/所长/部长/组长/生长/长大/长高/长个/
-zhao#朝阳/朝朝/明朝/朝晖/朝夕/朝思/今朝/朝气/朝三/朝秦/朝霞/鹰爪/龙爪/魔爪/爪牙/着急/着迷/着火/怎么着/正着/着凉/一着/犯不着/着数/这么着/犯得着/着慌/着忙/数得着/龙爪槐/嘲哳/嘲惹
-zhe#折/着/褶
-zhen#殝/椹
-zhi#标识/吱/殖/枝/方祇/后祇/皇祇/黄祇/皇地祇/金祇/祇树/月氏
-zhong#重/种
-zhou#粥
-zhu#属意/著/駯
-zhua#爪子
-zhuai#拽
-zhuan#芈月传/外传/传记/自传/正传/小传/评传/传略/别传
-zhui#椎/隹
-zhuo#执著/着装/着落/着意/着力/附着/着笔/胶着/着实/衣着/着眼/着想/着重/穿着/执着/着墨/着实/沉着/着陆/着想/着色/焯见/焯烁/辉焯
-zhuang#幢房/一幢/幢楼/庒
-zi#仔/兹
-zu#足
-zuo#柞/穝