我有一个长度为721
的字符串,如下所示:
String stmnt="27/08/2013 Cr 00000000000288.70 AMOUNT DEPOSITED FOR TELEPHONE EXPENSES 22/08/2013 Dr 00000000085000.00 PMT TO abcde BOHARA 20/08/2013 Cr 00000000015844.38 BEING REFUND AMOUNT DEPOSITED OF RMDC IP20/08/2013 Cr 00000000047419.09 BEING REFUND AMOUNT DEPOSITED OF SKBBL I15/08/2013 Dr 00000000002900.00 PMT TO lkjhgd 09876543 12/08/2013 Dr 00000000001723.00 PMT TO SELF 12/08/2013 Cr 00000000025563.00 liuytrew /SALARY / 070 / 748392 lkoiuytr08/08/2013 Dr 00000000002000.00 PMT TO SELF 07/08/2013 Dr 00000000000500.00 PMT TO 123456 nmnbvsgd 29/07/2013 Cr 00000000002000.00 DE PO BY SELF ";
一个字符串的长度应为72.在字符串stmnt
中,应该有10个语句,表示总长度 720 。字符串stmnt
的第一个语句应该如下:
string should be ="27/08/2013 Cr 00000000000288.70 AMOUNT DEPOSITED FOR TELEPHONE EXPENSES ";
但问题是填充了一个空格,如下所示:
irritated string="27/08/2013 Cr 00000000000288.70 AMOUNT DEPOSITED FOR TELEPHONE EXPENSES ";
在第一个字符串上,所以这是一个令我恼火的问题。
一个字符串的定义,如下所示:
1. first 10 digits are : date with length 10 and startIndex 0
2. next 4 digits are transaction type (CR/DR) `including spaces
also` and startIndex 10
3. next 18 digits are Account Balance including one space on right
side and startIndex 14
4. and rest 40 digits are particular startIndex 32
我的问题是我需要将长度为72的字符串拆分为定义部分的定义。
注意:我可以使用String.subString()
单独执行,但需要解决所有字符串问题。因为我需要一次解析721长度的字符串。
更新:需要regex
代码,使所有字符串的长度为72。条件应如我在定义部分
答案 0 :(得分:4)
我会使用正则表达式,如下面的代码。我没有测试过这个,所以你需要调整它。使用正则表达式的好处是,如果固定长度记录之间有额外的空格,则不会“介意”。
p = Pattern.compile("(\\d{2}/\\d{2}/\\d{4} (Cr|Dr) \\d{14}\\.\\d{2} .{50})");
m = p.matcher(bigRecord);
while(m.find()) {
String record = m.group();
}
根据Ingo的评论编辑。建议的Regex只是对该数据集实际需要的粗略估计,因此几乎肯定需要进一步改进。