如何将String转换为String数组(此字符串包含减号)

Hao*_*ang 1 java arrays

有一个

String temp = "M0-1"
Run Code Online (Sandbox Code Playgroud)

如何将此String转换为String []?

如果输出新的String数组,结果应为:

String[] newStringArray;
newStringArray[0] = M;
newStringArray[1] = 0;
newStringArray[2] = -1;
Run Code Online (Sandbox Code Playgroud)

新String数组的最后一个元素应该是"-1",这意味着"-1"将被视为一个整体,而不是" - "和"1".

我试图使用String.split("")解析这个字符串,但只得到一个这样的String数组:

String[] newStringArray;
newStringArray[0] = M;
newStringArray[1] = 0;
newStringArray[2] = -;
newStringArray[3] = 1;
Run Code Online (Sandbox Code Playgroud)

更新:字符串56应为[5,6],-10应为[-1,0]

小智 6

这样split()做:

String[] array = temp.split("(?<=[^-])");
Run Code Online (Sandbox Code Playgroud)

当前一个字符不是 a 时,它可以分割-

那个奇怪的正则表达式被称为后视.它的语法是(?<=regex),这是一个非捕获断言,前面的输入匹配指定的正则表达式,在这种情况下[^-],这意味着"任何不是负的字符".

这种断言有4个版本:

  • (?=regex)是一个积极的前瞻,意味着下一个输入必须匹配regex
  • (?!regex)是一个负向前看,意味着下一个输入必须不匹配regex
  • (?<=regex)是一个积极的外观,意味着前面的输入必须匹配regex
  • (?<!regex)是一个负面的背后,意味着nepreceedingxt输入必须不匹配regex

这是一个测试:

public static void main(String[] args) {
    String temp = "M0-1";
    String[] newStringArray = temp.split("(?<=[^-])");
    System.out.println(Arrays.toString(newStringArray));
}
Run Code Online (Sandbox Code Playgroud)

输出:

[M, 0, -1]
Run Code Online (Sandbox Code Playgroud)