作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个
String temp = "M0-1"
如何将这个 String 转换为 String[] ?
如果输出新的字符串数组,结果应该是:
String[] newStringArray;
newStringArray[0] = M;
newStringArray[1] = 0;
newStringArray[2] = -1;
新的字符串数组的最后一个元素应该是“-1”,这意味着“-1”将被视为一个整体,而不是“-”和“1”分开。
我尝试使用 String.split("") 解析这个字符串,但只得到一个这样的字符串数组:
String[] newStringArray;
newStringArray[0] = M;
newStringArray[1] = 0;
newStringArray[2] = -;
newStringArray[3] = 1;
更新:字符串 56 应该是 [5, 6],-10 应该是 [-1, 0]
最佳答案
这split()
会做的:
String[] array = temp.split("(?<=[^-])");
当前一个字符不是 -
时,它通过拆分来工作
那个看起来很奇怪的正则表达式被称为look-behind。它的语法是(?<=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));
}
输出:
[M, 0, -1]
关于java - 如何将字符串转换为字符串数组(此字符串包含负数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8483146/
我是一名优秀的程序员,十分优秀!