gpt4 book ai didi

java - Java中的复杂字符串拆分

转载 作者:行者123 更新时间:2023-11-30 06:37:50 25 4
gpt4 key购买 nike

考虑以下字符串:

5|12345|value1|value2|value3|value4+5|777|value1|value2|value3|value4?5|777|value1|value2|value3|value4+

这里是我想要分割字符串的方式,用 + 分割它所以我得到这个结果:

myArray[0] = "5|12345|value1|value2|value3|value4";

myArray[1] = "5|777|value1|value2|value3|value4?5|777|value1|value2|value3|value4";

如果字符串不包含字符 "?",则将其拆分为 "|",如果字符串包含 "?",则继续第二部分 拆分它并对每个部分"|" 拆分它并继续第二部分。

这是第二部分:

myObject.setAttribute1(newString[0]);
...
myObject.setAttribute4(newString[3]);

到目前为止,这是我得到的:

private static String input = "5|12345|value1|value2|value3|value4+5|777|value1|value2|value3|value4?5|777|value1|value2|value3|value4+";

public void mapObject(String input){

String[] myArray = null;

if (input.contains("+")) {
myArray = input.split("+");
} else {
myArray = new String[1];
myArray[0] = input;
}

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

String[] secondaryArray = null;
String[] myObjectAttribute = null;

if (myArray[i].contains("?")) {
secondaryArray = temporaryString.myArray[i].split("?");

for (String string : secondaryArray) {
myObjectAttribute = string.split("\\|");
}
} else {
myObjectAttribute = myArray[i].toString().split("\\|");
}

myObject.setAttribute1(myObjectAttribute[0]);
...
myObject.setAttribute4(myObjectAttribute[3]);
System.out.println(myObject.toString());
}

问题:

当我拆分 myArray 时,通过 myArray[0] 进行处理,一切都设置得很好。

然后是 myArray[1],它分为两部分,然后第二部分覆盖第一部分的值(我怎么知道的?)。我已经覆盖了 myObject 的 toString() 方法,当我完成打印设置值时,我知道它覆盖了它,有人知道我该如何解决这个问题吗?

最佳答案

我不太确定这里的意图是什么,但是在这段代码中

secondaryArray = temporaryString.split("?");

for (String string : secondaryArray) {
myObjectAttribute = string.split("\\|");
}

如果secondaryArray拆分操作后有两个元素,您将迭代每一半并重新分配 myObjectAttribute每次到 string.split("\|") 的输出。 secondaryArray 的第一个元素是什么并不重要,因为此代码运行后 myObjectAttribute将包含 split("\\|") 的结果在数组的最后一个元素上。

此外,调用 .toString() 也没有意义在 String 对象上,就像在 temporaryString = myArray[i].toString() 中所做的那样.

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

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