java字符char之间比较_java – 在char之间拆分字符串

我想在分隔符上拆分一个String.

示例字符串:

String str="ABCD/12346567899887455422DEFG/15479897445698742322141PQRS/141455798951";

现在我想要像我想要的字符串ABCD / 12346567899887455422,DEFG / 15479897445698742322141

>之前只有4个字符/

>之后/任意数量的字符数字和字母.

更新:

我需要前4个字符的唯一时间是在显示分隔符后,因为字符串可能包含字母或数字…

我的代码尝试:

public class StringReq {

public static void main(String[] args) {

String str = "BONL/1234567890123456789CORT/123456789012345678901234567890HOLD/123456789012345678901234567890INTC/123456789012345678901234567890OTHR/123456789012345678901234567890PHOB/123456789012345678901234567890PHON/123456789012345678901234567890REPA/123456789012345678901234567890SDVA/123456789012345678901234567890TELI/123456789012345678901234567890";

testSplitStrings(str);

}

public static void testSplitStrings(String path) {

System.out.println("splitting of sprint starts \n");

String[] codeDesc = path.split("/");

String[] codeVal = new String[codeDesc.length];

for (int i = 0; i < codeDesc.length; i++) {

codeVal[i] = codeDesc[i].substring(codeDesc[i].length() - 4,

codeDesc[i].length());

System.out.println("line" + i + "==> " + codeDesc[i] + "\n");

}

for (int i = 0; i < codeVal.length - 1; i++) {

System.out.println(codeVal[i]);

}

System.out.println("splitting of sprint ends");

}

}

解决方法:

您声称在/可以出现数字和字母后,但在您的示例中,我看不到任何字母应该包含在/后的结果中.

因此,基于该假设,您可以简单地拆分前面有数字的位置和后面的A-Z字符.

为此,您可以使用正在使用look-around机制的正则表达式进行拆分,例如str.split(“(?< = [0-9])(?= [A-Z])”)

演示:

String str = "BONL/1234567890123456789CORT/123456789012345678901234567890HOLD/123456789012345678901234567890INTC/123456789012345678901234567890OTHR/123456789012345678901234567890PHOB/123456789012345678901234567890PHON/123456789012345678901234567890REPA/123456789012345678901234567890SDVA/123456789012345678901234567890TELI/123456789012345678901234567890";

for (String s : str.split("(?<=[0-9])(?=[A-Z])"))

System.out.println(s);

输出:

BONL/1234567890123456789

CORT/123456789012345678901234567890

HOLD/123456789012345678901234567890

INTC/123456789012345678901234567890

OTHR/123456789012345678901234567890

PHOB/123456789012345678901234567890

PHON/123456789012345678901234567890

REPA/123456789012345678901234567890

SDVA/123456789012345678901234567890

TELI/123456789012345678901234567890

如果你的字母实际上可以出现在第二部分(在/之后),那么你可以使用split来尝试找到有四个字母字符的地方和/之后像split(“(?= [AZ] {4} /)”) (假设您至少使用Java 8,如果不是,则需要在字符串的开头手动排除拆分的情况,例如在正则表达式的开头添加(?!^)或(?< =.)) .

标签:java,split,string

来源: https://codeday.me/bug/20190713/1446117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值