2013-12-13 65 views
3

我試圖修改這樣的輸出[SNO, text, SNAME, text, STATUS, number, CITY, text]。 要像這樣(SNO text, SNAME, text, STATUS number, CITY, text)修改SQL語句的字符串輸出

但輸入這個代碼

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

我得到了這一點,作爲輸出處理的第一個提到的輸出後,我得到:([SNO, text, SNAME, text, STATUS, number, CITY, text])

我的事情,我不是真正理解正則表達式的概念...

+0

如果答案是有幫助的,你可以[接受](http://meta.stackexchange.com/a/5235/227183)。 –

回答

0

你試過這個嗎?

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

我很抱歉,但輸出仍有很多逗號:/ ((SNO,文本,SNAME,文本,狀態,數字,城市,文本)) 我想我可以通過查看我的代碼刪除額外的括號。 –

0

這是怎麼回事?

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

嘗試了下:

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); 
} 
+0

我得到一個無法解析方法錯誤for(String field:tableFields.split(「[\\ [\\],」「)){。並將分割標記爲紅色。我不明白爲什麼:( –

+0

別忘了逃避\ \ \。 –

0

鑑於輸入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");