code: public static String toHyphenLine(String str) {
          if (str == null) {
              return null;
          }
          if (str.isEmpty()) {
              return str;
          }
          // 本身连词符
          if (str.indexOf(SEPARATOR_HYPHEN_LINE) >= 0) {
              return str.toLowerCase();
          }
          // 本身下划线
          if (str.indexOf(SEPARATOR_UNDER_LINE) >= 0) {
              return str.replace(SEPARATOR_UNDER_LINE, SEPARATOR_HYPHEN_LINE)
                      .toLowerCase();
          }
          StringBuilder sb = new StringBuilder();
          boolean upperCase = false;
          for (int i = 0; i < str.length(); i++) {
              char c = str.charAt(i);
              boolean nextUpperCase = true;
              if (i < (str.length() - 1)) {
                  nextUpperCase = Character.isUpperCase(str.charAt(i + 1));
              }
              if ((i >= 0) && Character.isUpperCase(c)) {
                  if (!upperCase || !nextUpperCase) {
                      if (i > 0) {
                          sb.append(SEPARATOR_HYPHEN_LINE);
                      }
                  }
                  upperCase = true;
              } else {
                  upperCase = false;
              }
              sb.append(Character.toLowerCase(c));
          }
          return sb.toString();
      }
docs: 连词符命名风格字符串
  
  @param str
  待转换字符串
  @return 连词符命名风格字符串
  @author Zhanghongdong