java - 根据我的要求在java中按长度分割字符串

标签 java regex string substring

我有一个长度为 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/

相关文章:

Java 8 stream groupBy pojo

java - boolean 值总是返回 false,可能是由于值没有增加

c# - 正则表达式长度验证 : Ignore leading and trailing whitespaces

regex - vim 在搜索和替换中使用通配符时交换子字符串

java - 替换大字符串中的大量子字符串

c++ - 使用 C++ STL 库查找变量模式

c - C中的字符串和指针

java - Android 服务 - SocketIO - GCM - 与 Activity 通信

java - 需要使用浏览器缓存检查用户是否登录 | Selenium java

java - 使用 Regex 迭代 XML 文本