gpt4 book ai didi

java - String.split() 返回一个带有附加空值的数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:25 25 4
gpt4 key购买 nike

我正在编写一段代码,我必须在其中将字符串拆分成单独的部分。 我的代码的基本逻辑流程是,LHS 下方的数字,即 1、2 和 3 是对象的 ID。拆分它们后,我将使用这些 ID,获取相应的值并将下面字符串中的 ID 替换为其相应的值。 我拥有的字符串如下 -

String str = "(1+2+3)>100";

我使用了以下代码来拆分字符串 -

String[] arraySplit = str.split("\\>|\\<|\\=");
String[] finalArray = arraySplit[0].split("\\(|\\)|\\+|\\-|\\*");

现在我得到的数组是这样的 -

arraySplit = [(1+2+3), >100];
finalArray = [, 1, 2, 3];

因此,在拆分字符串后,我将用值替换字符串,即字符串现在是 (20+45+50)>100其中 20、45 和 50 是各自的值。 (此字符串将在 SpEL 中用于计算公式)

我快到了,只是我在第一个位置得到了一个空元素。 有没有办法不获取第二个数组中的空元素,即finalArray ? 对此做了一些研究,我猜它正在拆分字符串 (1+2+3)并将一个空元素作为字符串的一部分。如果是这样,那么除了String.split()还有其他方法吗?那会给我同样的结果吗?

编辑-

在这里,(1+2+3)>100只是一个例子。圆括号是公式的一部分,字符串也可以是 ((1+2+3)*(5-2))>100 .

编辑 2 -

拆分此字符串并对其进行一些代码处理后,我将在 SpEL 中使用此字符串。所以如果直接使用 SpEL 有更好的解决方案,那就太好了。

此外,目前我正在使用公式的语法 - (1+2+3) * 4>100 但如果有办法通过稍微更改公式语法来解决问题这也会有帮助,例如将公式替换为 - ({#1}+{#2}+{#3}) * {#4}>100,在这种情况下,我会使用 {# 作为变量获取变量并获取数字。

我希望这部分是清楚的。

编辑 3 -

以防万一,我的项目中也有 SpEL 虽然我对它没有太多想法,所以如果有更好的解决方案使用 SpEL 那么它非常受欢迎 .问题的基本逻辑写在问题的开头以粗体显示。

最佳答案

如果你看一下 split(String regex, int limit) (重点是我的):

When there is a positive-width match at the beginning of this string then an empty leading substring is included at the beginning of the resulting array.

因此,您可以将 0 指定为 limit 参数:

If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.

关于java - String.split() 返回一个带有附加空值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43716453/

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