繁体   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