gpt4 book ai didi

java - 在字符之间拆分字符串

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:45 25 4
gpt4 key购买 nike

我想在分隔符上拆分一个字符串。示例字符串:

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

现在我想要字符串为 ABCD/12346567899887455422DEFG/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");
}

}

最佳答案

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

因此,基于该假设,您可以简单地拆分 placed,其中前面有数字,后面有 A-Z 字符。

为此,您可以使用正则表达式进行 split,正则表达式使用 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("(?=[A-Z]{4}/)") (假设你至少使用 Java 8,如果您不需要手动排除在字符串开头拆分的情况,例如通过在正则表达式的开头添加 (?!^)(?<=.))。

关于java - 在字符之间拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com