public String[] splitWords(final String s) {
    if (Kits.STR.isEmpty(s)) {
      return Kits.STR.emptyArray();
    }
    final List<String> list = new ArrayList<>();
    final int len = s.length();
    int lastIndex = 0;
    for (int i = 1; i < len; ++i) {
      final char c = s.charAt(i);
      if (isWordEdge(c)) {
        list.add(s.substring(lastIndex, i));

        if (hasSeperator()) {
          lastIndex = i + 1;
        } else {
          lastIndex = i;
        }
      }
    }
    list.add(s.substring(lastIndex));
    return list.toArray(new String[list.size()]);
  }
  public String convertTo(final LanguageLabelConverter targetFormat, final String source) {
    if (Kits.STR.isEmpty(source)) {
      return source;
    }

    final StringBuilder sb = new StringBuilder();

    targetFormat.handleFirstChar(sb, source.charAt(0));

    final int len = source.length();
    for (int i = 1; i < len; ++i) {
      final char c = source.charAt(i);
      if (isWordEdge(c)) {
        targetFormat.handleNextWordFirstChar(sb, c);
      } else {
        sb.append(c);
      }
    }
    return sb.toString();
  }