我有一个长度为 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。条件应该如我在定义部分
最佳答案
我会使用正则表达式,如下面的代码。我还没有测试过这个,所以你需要调整它。使用正则表达式的好处是,如果固定长度记录之间有额外的空格,它不会“介意”。
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 的评论进行编辑。建议的正则表达式只是对该数据集实际需要的内容的粗略估计,因此几乎肯定需要进一步的改进。
关于java - 根据我的要求在java中按长度分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666754/