【问题标题】:FieldSet readString method not reading leading spacesFieldSet readString 方法不读取前导空格
【发布时间】:2012-04-27 07:04:20
【问题描述】:

我正在从文件中读取记录并插入数据库。

我正在使用 DB2 数据库。

记录是这样的:

   abc    pqr  abcd

所以在 abc 之前,记录的开头也有几个空格。

我正在使用 SpringBatch 程序和内部字段集映射器读取文件,我正在打印从文件中读取的字符串:

System.out.println("*" + fieldSet.readString("FULL_RECORD") + "*");

但是,我得到的结果是:

*abc    pqr  abcd*

这意味着没有保留前导空格。

我的配置文件中的 linetokenizer 是:

<beans:property name="lineTokenizer">
  <beans:bean class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
    <beans:property name="columns" value="1-241"/>
    <beans:property name="names" value="FULL_RECORD"/>
  </beans:bean>
</beans:property>

我正在使用默认线映射器类并将上面的标记器作为其属性传递。

org.springframework.batch.item.file.mapping.DefaultLineMapper

如何保留每条记录前的前导空格?

【问题讨论】:

  • 也许在 "abc" 和 "pqr" 之间有一个 \t 而不是空格。
  • @IManis_tn:只有在记录开头有前导空格时才会出现问题。 abc 和 pqr 之间的空格很好。
  • 因此,如果您可以将记录作为字符串,请尝试使用 trim() 消除记录开头和结尾的前导空格。
  • 您的文字中没有真正的问题,但我是否理解正确:您想保留尾随空格?
  • @Ralph:我想保留前导空格...前导空格没有得到保留,这从我的问题中的 Sys Out 输出中可以清楚地看出..

标签: java string spring spring-batch


【解决方案1】:

看看代码

  1. DefaultFieldset 的 readString 方法使用
  2. String.trim()

只是改变

System.out.println("*" + fieldSet.readString("FULL_RECORD") + "*");

System.out.println("*" + fieldSet.readRawString("FULL_RECORD") + "*");

DefaultFieldSet.readRawString()

从具有给定“名称”的列中读取字符串值,包括尾随 空格(不要修剪)。

【讨论】:

  • 谢谢迈克尔。做了同样的事情。但是,我无法回答我自己的问题,所以无法更新..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多