日期:2014-05-20  浏览次数:20616 次

取字符串固定位数问题
问题描述:从txt文件中读取数据,按行读取,按不同的固定长度分别读取,赋给不同的项目。遇到的问题是在有UE打开TXT文档时,一个汉字字符占两位,而读取到java程序中,用subString方法获得时,一个汉字字符占一位,在配置文件中配置位数的时候就会出现位数不匹配的问题。请问如何解决呢?
例如在数据库配置文件中配置时,想取第30---70位数据,赋给银行名称,但是在java程序中用sugString方法时,str.subString[30,70]获得的数据是“测试银行名称用的银行名 786 ”。而想获得的是“测试银行名称用的银行名 ”


------解决方案--------------------
txt文件和Java程序全部采用UTF-8编码。
------解决方案--------------------
你可以读取一行数据出来,然后把这行数据以空格作为分割符进行分割,然后再去读字符串数组中的元素,把空的元素去掉,这样就不考虑字符长度问题了
String.split()
------解决方案--------------------
能直接封装成类啊。
------解决方案--------------------
没看懂LZ纠结的是什么问题。
如果txt文件是程序生成的,程序是不会看UE上面显示的列数的。只要确保是第N个字符即可。
如果是手工输入txt,你换个编辑器不就好了,比如eclipse,可以清楚显示某个字符的列数即可,不必追求“视觉上”的对齐。
------解决方案--------------------
最简单的就是用正则表达式
------解决方案--------------------
String [] temp = "asdf asdfa asdf".split("\\s+");