docs: public static <T> void expandNumberMatchingRange(Map<String, T> headingDefinitions, String start, String end, T attachment){
  		int firstDiff; //第一个不相同字符的位置
  		int lastDiff;  //末尾0:9对应段开始的位置
  		
  		// 先强行保证起始号码与结束号码长度相同
  		if (start.length() > end.length()){
  			StringBuilder sb = new StringBuilder(end);
  			while (start.length() > sb.length()){
  				sb.append("9");
  			}
  			end = sb.toString();
  		} else if (end.length() > start.length()){
  			StringBuilder sb = new StringBuilder(start);
  			while (end.length() > sb.length()){
  				sb.append("0");
  			}
  			start = sb.toString();
  		}
  		
  		// 然后寻找第一个不相同字符的位置
  		for (firstDiff = 0; firstDiff < start.length(); firstDiff++){
  			if (start.charAt(firstDiff) != end.charAt(firstDiff)){
  				break;
  			}
  		}
  		
  		// 再寻找末尾0:9对应段开始的位置
  		for (lastDiff = start.length() - 1; lastDiff >= 0; lastDiff--){
  			if (start.charAt(lastDiff) != '0' || end.charAt(lastDiff) != '9'){
  				break;
  			}
  		}
  		lastDiff++;
  		
  		if (firstDiff == lastDiff){ // 则表示可合并为一条
  			headingDefinitions.put(start.substring(0, firstDiff), attachment);
  		} else { // 则表示要扩展为多条
  			int j = Integer.parseInt(start.substring(firstDiff, lastDiff));
  			int k = Integer.parseInt(end.substring(firstDiff, lastDiff));
  			String head = start.substring(0, firstDiff);
  			String f = "%" + (lastDiff-firstDiff) + "d";
  			StringBuilder sb = new StringBuilder();
  			for (int i = j; i <= k; i++){
  				sb.setLength(0);
  				sb.append(head);
  				sb.append(String.format(f, i));
  				headingDefinitions.put(sb.toString(), attachment);
  			}
  		}
  	}