根据指定分隔符分割字符串(可用于SQL语句切分)

    技术2023-07-16  79

    /** * 根据指定分隔符分割字符串---忽略在引号里面的分隔符 * @param str * @param delimiter * @return */ public static List<String> splitIgnoreQuota(String str, char delimiter) { List<String> tokensList = new ArrayList<>(); boolean inQuotes = false; boolean inSingleQuotes = false; StringBuilder b = new StringBuilder(); char[] chars = str.toCharArray(); int idx = 0; for (char c : chars) { char flag = 0; if (idx > 0) { flag = chars[idx - 1]; } if (c == delimiter) { if (inQuotes) { b.append(c); } else if (inSingleQuotes) { b.append(c); } else { tokensList.add(b.toString()); b = new StringBuilder(); } } else if (c == '\"' && '\\' != flag && !inSingleQuotes) { inQuotes = !inQuotes; b.append(c); } else if (c == '\'' && '\\' != flag && !inQuotes) { inSingleQuotes = !inSingleQuotes; b.append(c); } else { b.append(c); } idx++; } tokensList.add(b.toString()); return tokensList; }
    Processed: 0.009, SQL: 9