Java 拆分不能正常工作

Java 拆分不能正常工作,java,split,Java,Split,我试图将组以字符串形式保存到数组中,以便在需要时在单个变量中使用它们。为此,我使用split,但出于某种原因,我只在数组的第一个位置获得完整字符串:ultimate_数组[0]。如果我想使用ultimate_数组[1],我会得到一个类似“out-bounds”的异常。 你知道我做错了什么吗 String string_final = ""; String[] ultimate_array = new String[100]; String sNrFact = ""; string_final=

我试图将组以字符串形式保存到数组中,以便在需要时在单个变量中使用它们。为此,我使用split,但出于某种原因,我只在数组的第一个位置获得完整字符串:ultimate_数组[0]。如果我想使用ultimate_数组[1],我会得到一个类似“out-bounds”的异常。 你知道我做错了什么吗

String string_final = "";
String[] ultimate_array = new String[100];
String sNrFact = "";

string_final="Nrfact#$idfact1#$valfact1#$idfact2#$valfact2#$idfact3#$valfact3#$idfact4#$valfact4#$idfact5#$valfact5#$idfact6#$valfact6#$idfact7#$valfact7#$idfact8#$valfact8#$idfact9#$valfact9#$idfact10#$valfact10";

ultimate_array = string_final.split("#$");
sNrFact = ultimate_array[0];

拆分无法正常工作的原因是拆分使用正则表达式,而“$”是正则表达式的特殊字符(drekka)

拆分采用正则表达式,而
$
是特殊字符(字符串结尾),因此必须使用反斜杠对其进行转义。无论如何,它也是一个特殊的字符,这一次是在Java中,所以您也必须对它进行转义。最后的代码是:

ultimate_array = string_final.split("#\\$");

您需要转义
$
(字符串末尾)


只需更换您的线路:

ultimate_array = string_final.split("#$"); 
与:


我希望你的问题得到解决

split()
的参数应该是一个正则表达式,因此
$
与“字符串结束”匹配,答案正确。分割无法正常工作的原因是分割使用正则表达式,而“$”是正则表达式的特殊字符。
ultimate_array = string_final.split("#\\$");
ultimate_array = string_final.split("#$"); 
ultimate_array = string_final.Split(new string[] { "#$" }, StringSplitOptions.None);