当前位置: 首页 > 知识库问答 >
问题:

字符串拆分:如果第一个字符是负号,则将其作为负号处理

黄景胜
2023-03-14

-符号可以被视为运算符或负号。如果-位于开始,则应将其视为负号和抹去字符串的减法。这仅适用于-符号,而将始终是加号。如何实现此目的?

输入:

-23-23+4=F1Qa;
+23-23+4=F1Qa;

输出:

["-23","-","23","+","4","=","F","1","Q","a",";"]
["+", "23","-","23","+","4","=","F","1","Q","a",";"]

到目前为止我一直在尝试

String regx = (?:# .*? #:?)|(?!^)(?=\\D)|(?<=\\D)(?=\\d-)
String[] splits = inputString.split(regx);

共有1个答案

王磊
2023-03-14

您可以使用正则表达式^-\d|\d\d表示开头为负整数(即^-\d)或数字(即\d ),或非数字(\d)。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        String str = "-23-23+4=F1Qa;";
        Pattern pattern = Pattern.compile("^-\\d+|\\d+|\\D");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

输出:

-23
-
23
+
4
=
F
1
Q
a
;

另一个测试:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        String str = "+23-23+4=F1Qa;";
        Pattern pattern = Pattern.compile("^-\\d+|\\d+|\\D");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

输出:

+
23
-
23
+
4
=
F
1
Q
a
;

 类似资料:
  • 如果我有这个字符串:“MyStringToForSpl的”,我想用这个词“环”来拆分它。如果我这样做:我将得到包含以下元素的数组: MyS 用于拆分 我无法找到拆分它并在结果数组中包含“ring”的最佳方法,如下所示: 1.我的 2 .戒指 3.ForSplitting

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

  • 问题内容: 我有这串 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来分隔它们。 问题答案:

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 我想拆分到一个数组4使用 这是我的代码: 但是,结果标记是一个空数组:[],而不是我想要的4的数组。 我已经测试过稍微更改一下str: 这次的结果标记是<代码>[“”、“”、“”、“”、“”1“]。这接近我想要的,但我真的不想在进行拆分之前添加这个“1”。 问题基本上是字符串。如果split()只包含空元素,它将返回空数组。 你能帮我解决这个问题吗?

  • 问题内容: 我有一个字符串,代表一个使用逗号分隔数千个数字的数字。如何在python中将其转换为数字? 在尝试进行转换之前,我可以将逗号替换为空字符串,但这感觉有点不对。有没有更好的办法? 问题答案: