当前位置: 代码迷 >> java >> Java与JavaScript分裂行为
  详细解决方案

Java与JavaScript分裂行为

热度:38   发布时间:2023-08-04 09:16:16.0

Java和JavaScript之间的拆分功能似乎不同。

我不需要匹配某个正则表达式标准,或使用基于前瞻性的正则表达式。 我的问题在于,在分割正则表达式的最终匹配之后跟踪空匹配(这是一组简单的字符,而不是表达式)。

下面是我想要实现的输出示例以及我真正得到的内容。

Java的

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~")

/* results with an array of length 8 */ (java.lang.String[]) [, , , A, B, C, D, E]

使用Javascript

 "~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~".split("~#~")
 /* results with an array of length 11 */ ["", "", "", "A", "B", "C", "D", "E", "", "", ""]

我真的无法对此做出很好的解释,因为我正在使用Java应用程序并且拆分导致我遇到麻烦,我想要与JavaScript中相同的结果。 我怎么能得到它?

split(String regex) Javadoc split(String regex)

此方法的作用就像通过调用具有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾的空字符串不包含在结果数组中。

split(String regex, int limit) Javadoc split(String regex, int limit)

如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度。 如果n为零,那么模式将被应用尽可能多的次数,该数组可以具有任何长度,并且将丢弃尾随的空字符串。

所以...... split("~#~", -1)应该可以解决问题。

Java的split()文档明确提到不会包含尾随的空字符串。

此方法的作用就像通过调用具有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾的空字符串不包含在结果数组中。

但你可以实现它

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~" , -1)

这是一种重载方法

Java的split()文档明确提到不会包含尾随的空字符串。

此方法的作用就像通过调用具有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾的空字符串不包含在结果数组中

  相关解决方案