簡體   English   中英

JAVA - 更改字符串格式

[英]JAVA - Change String Format

JAVA - 我有一個類似下面第一個的文件,但我需要它看起來像第二個,以便稍后插入數據庫。 有人可以幫我弄清楚如何實現它嗎? 我嘗試使用數組讀取文件,但無法正確更改引號。 雙引號到單引號是能夠插入的關鍵。 下面是減去星號。

第一個:紅色,藍色,綠色,黃色,“11,12,13,14,15,16”,橙色
第二個: ,('紅色','藍色','綠色','黃色','11,12,13,14,15,16','橙色','日期')

tl;博士

逗號分隔值 (CSV)數據的形式讀取和寫入。

提示:使用 CSV 處理庫,例如Apache Commons CSV

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM