【问题标题】:Modify string output for SQL statements修改 SQL 语句的字符串输出
【发布时间】:2014-01-01 19:40:41
【问题描述】:

我正在尝试像这样[SNO, text, SNAME, text, STATUS, number, CITY, text] 修改输出。 像这样(SNO text, SNAME, text, STATUS number, CITY, text)

但是我在用这段代码处理第一个提到的输出后得到的输入

String fieldsToTable ="(" + tableFields + ")";
fieldsToTable.replaceAll("[()]", "");
String modFieldsToTable = fieldsToTable.replace("\\,","");
System.out.println(modFieldsToTable);

我将其作为输出:([SNO, text, SNAME, text, STATUS, number, CITY, text])

我觉得我并没有真正掌握正则表达式的概念......

【问题讨论】:

  • 如果回答对您有帮助,您可以accept it

标签: java regex


【解决方案1】:

你试过了吗?

fieldsToTable = fieldsToTable.replace("[","(").replace("]",")");

【讨论】:

  • 我很抱歉,但输出仍然有很多逗号:/((SNO,文本,SNAME,文本,状态,数字,城市,文本))我想我可以通过查看删除额外的括号通过我的代码。
【解决方案2】:

这个呢?

String fields = "(" + tableFields.substring(1, tableFields.length() - 1) + ")";

【讨论】:

    【解决方案3】:

    尝试下一个:

    public static void main(final String[] args) {
        String tableFields = "[SNO, text, SNAME, text, STATUS, number, CITY, text]";
        List<String> list = new ArrayList<String>();
        for (String field : tableFields.split("[\\[\\] ,]")) {
            if (!field.isEmpty()) {
                list.add(field);
            }
        }
        StringBuilder sb = new StringBuilder("(");
        for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
            sb.append(iterator.next());
            if (iterator.hasNext()) {
                sb.append(",");
            }
        }
        sb.append(")");
        String modFieldsToTable = sb.toString();
        System.out.println(modFieldsToTable);
    }
    

    【讨论】:

    • 我在 for (String field : tableFields.split("[\[\] ,]")) {.并且拆分标记为红色。我不明白为什么:(
    • 别忘了用 \\ 转义 \。
    【解决方案4】:

    给定输入String tableFields = "[SNO, text, SNAME, text, STATUS, number, CITY, text]"...

    要删除方括号,请尝试:

    String fieldsToTable = tableFields.replace('[', '('); // replaces [ with (  
    fieldsToTable = fieldsToTable.replace(']', ')');      // replaces ] with )
    


    目前尚不清楚何时应该删除逗号。如果要删除所有逗号,则代码为:

    fieldsToTable = fieldsToTable.replaceAll(",", ""); // removes all commas
    

    如果您只是想在这两种特定情况下删除逗号,您可以这样做:

    fieldsToTable = fieldsToTable.replace("SNO,", "SNO");      // removes comma after SNO
    fieldsToTable = fieldsToTable.replace("STATUS," "STATUS"); // removes comma after STATUS
    


    请注意,由于replace 方法返回结果字符串,您可以通过将三者链接在一起来提高代码的清晰度。

    String fieldsToTable = tableFields.replace('[', '(')
                                      .replace(']', ')')
                                      .replaceAll(",", "");
    

    String fieldsToTable = tableFields.replace('[', '(')
                                      .replace(']', ')')
                                      .replace("SNO,", "SNO")
                                      .replace("STATUS," "STATUS");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 2019-08-26
      • 2016-04-30
      • 2016-07-27
      相关资源
      最近更新 更多