冲txt格式文件里面一行一行的读数,分别送到String对象里面:
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,"31,104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,"100,000.08",0,"104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,"456,789.99","104,705.73"
....
现在要一行一行的处理为:
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;960;0;31104705.73
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;100000.08;0;104705.73
....
这样的结果。
其实就是把字符串里的""好去掉并且把,号换为;号。但是字符串里"31,104,705.73"这种值其实就是31104705.73,在把,号换为;号的时候要注意(不然就把31,104,705.73这个数拆分成三个数了)。
最后通过str.split(";")把字符串分割成数组,把对应的值送到对象里面去。请问有啥好办法。
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,"31,104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,"100,000.08",0,"104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,"456,789.99","104,705.73"
....
现在要一行一行的处理为:
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;960;0;31104705.73
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;100000.08;0;104705.73
....
这样的结果。
其实就是把字符串里的""好去掉并且把,号换为;号。但是字符串里"31,104,705.73"这种值其实就是31104705.73,在把,号换为;号的时候要注意(不然就把31,104,705.73这个数拆分成三个数了)。
最后通过str.split(";")把字符串分割成数组,把对应的值送到对象里面去。请问有啥好办法。
第1步:先把2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,截取出来(也就是从 0到倒数第二个"的位置),然后再把剩下的做为另外一个字符串
第2步:用replaceAll()方法把2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,的所有逗号替换成分号,然后再与后面的字符串组合
货款,960,0,"31,104,705.73"
货款,"100,000.08",0,"104,705.73"
货款,960,"456,789.99","104,705.73""xxx,xxx.xx"这种数会出现在贷款后面三个数的任意位子,可以同时三个都是。
replaceAll
public String replaceAll(String replacement)替换模式与给定替换字符串相匹配的输入序列的每个子序列。
此方法首先重置匹配器。然后,它将扫描输入序列以查找该模式的匹配项。不属于任何匹配的字符被直接添加到结果字符串;在结果中每个匹配都将被替换字符串所替换。替换字符串可能包含到已捕获子序列的引用,如在 appendReplacement 方法中一样。 注意,在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。 在给定正则表达式 a*b、输入 "aabfooaabfooabfoob" 和替换字符串 "-" 的情况下,为该表达式针对匹配器调用此方法将产生字符串 "-foo-foo-foo-"。 调用此方法将更改此匹配器的状态。如果在将来的匹配操作中使用该匹配器,则应该首先重置它。
参数:
replacement - 替换字符串。
返回:
通过使用替换字符串替换每个匹配子序列,并在需要时取代已捕获子序列所构造的字符串。
txt文档是银行回的对账单,打死也不能变的玩意儿。
可以在字符串里把"xxx,xxx.xx"(位数不确定)这种格式,改为"xxxxxx.xx"的格式?
试试看。。
StringBuffer sb = new StringBuffer();
String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"";
String[] temp = str.split(",\"");
for (int i = 0; i < temp.length; i++) {
if (temp[i].indexOf("\"") != temp[i].length()-1) {
temp[i] = temp[i].replaceAll(",", ";");
}
temp[i] = temp[i].replaceAll(",", "").replaceAll("\"", "");
}
for (String string : temp) {
sb.append(string+";");
}
System.out.println(sb.toString());
有效果。
成功把"xx,xxx,xxx.xx"里面的逗号去掉了。
剩下来,我只要把""号去掉,再把逗号换为分号。
你的str是什么? 我测试怎么没有效果啊。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
interface Evaluator { public String evaluate(Matcher m); }public class Test { public static String replaceAll(String src, String regex, Evaluator mp) {
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(src);
while(m.find()) {
m.appendReplacement(sb, Matcher.quoteReplacement(mp.evaluate(m)));
}
m.appendTail(sb);
return sb.toString();
} public static void main(String[] args) {
String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"\n"
+ "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,\"100,000.08\",0,\"104,705.73\"\n"
+ "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,\"456,789.99\",\"104,705.73\"\n";
str = replaceAll(str, "\"([^\"]*)\"", new Evaluator() {
public String evaluate(Matcher m) {
return m.group(1).replace(",", "");
}
});
str = str.replace(",", ";");
System.out.println(str);
}}
String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"";打印显示是:
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,“31104705.73”我再把这个字符串:
str = str.replace("\"", "");//去掉""号
str = str.replace(",", ";");//将逗号替换为分号最后:
String[] svo = str.split(";");