[英]JAVA - Change String Format
JAVA - 我有一個類似下面第一個的文件,但我需要它看起來像第二個,以便稍后插入數據庫。 有人可以幫我弄清楚如何實現它嗎? 我嘗試使用數組讀取文件,但無法正確更改引號。 雙引號到單引號是能夠插入的關鍵。 下面是減去星號。
第一個:紅色,藍色,綠色,黃色,“11,12,13,14,15,16”,橙色
第二個: ,('紅色','藍色','綠色','黃色','11,12,13,14,15,16','橙色','日期')
以逗號分隔值 (CSV)數據的形式讀取和寫入。
提示:使用 CSV 處理庫,例如Apache Commons CSV 。
您的文本采用CSV格式。
使用諸如Apache Commons CSV 之類的庫來讀取並解析為 Java 對象。 這已在 Stack Overflow 上多次解決,因此請搜索更多信息和示例,包括整個示例應用程序的源代碼。
然后將這些對象寫為用單引號括起來的文本。 CSV 庫也可能對此有所幫助,如果它具有在每個元素上強制使用引號括起來的選項,並指定引號的類型。
String input = "Red,Blue,Green,Yellow,\"11,12,13,14,15,16\",Orange";
try (
Reader reader = new java.io.StringReader( input ) ;
)
{
Iterable < CSVRecord > records = CSVFormat.RFC4180.parse( reader );
for ( CSVRecord record : records )
{
// Dump to console.
record.iterator().forEachRemaining( string -> System.out.println( string ) );
// Write now data.
StringBuilder builder = new StringBuilder( "(" );
record.iterator().forEachRemaining( string -> builder.append( "'" ).append( string ).append( "'" ).append( "," ) ); // Leaves an extra comma at end.
builder.deleteCharAt( builder.lastIndexOf( "," ) ); // Delete that extra comma at end.
builder.append( ")" );
System.out.println( "builder.toString() = " + builder.toString() );
}
}
catch ( IOException e )
{
e.printStackTrace();
}
運行時:
Red
Blue
Green
Yellow
11,12,13,14,15,16
Orange
builder.toString() = ('Red','Blue','Green','Yellow','11,12,13,14,15,16','Orange')
但我懷疑正確使用 JDBC 可以更好地實現插入數據庫的更大目標。 請繼續閱讀以了解詳細信息。
PreparedStatement::set…
您似乎采用了錯誤的方法來使用 JDBC。
不要費心將您的文本操作為符合 SQL 的字符串。 不要將您的數據 arguments 作為文本塊傳遞給 SQL。
使用准備好的語句來防范 SQL 注入攻擊。 通過調用set…
命令傳遞每個數據參數。
myPreparedStatement.setString( 1 , "Red" ) ;
當然,您將在變量而不是文字中傳遞Red
文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.