从JAVA字符串中提取复数
我想从字符串形式的复杂表达式中提取数字。例如:从JAVA字符串中提取复数,java,parsing,numbers,Java,Parsing,Numbers,我想从字符串形式的复杂表达式中提取数字。例如: Input: '2+3*i + 1-4*i + -2*i'. Output: 2 , 3 , 1, -4 , -2. 我尝试使用split(“-\+\\\\\*”解析它们,但是我丢失了负数的符号,有什么建议吗?我想在您的情况下使用Pattern和Matcher,如下所示: String str = "2+3i + 1-4i + -2i"; Pattern pattern = Pattern.compile("[-+]
Input: '2+3*i + 1-4*i + -2*i'.
Output: 2 , 3 , 1, -4 , -2.
我尝试使用
split(“-\+\\\\\*”
解析它们,但是我丢失了负数的符号,有什么建议吗?我想在您的情况下使用Pattern和Matcher,如下所示:
String str = "2+3i + 1-4i + -2i";
Pattern pattern = Pattern.compile("[-+]?\\d+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
输出
2
+3
1
-4
-2
将“环视”添加到句柄,然后添加一个数字:
.split("(\\*i)? *((?<=\\d)(?=-)|-(?!\\d)|\\+|$) *")
环顾四周,断言,但不要消费,输入,这是您在这里需要的
我在正则表达式中添加了更多内容,以丢弃数字周围的内容。如果希望在数组中获得匹配结果,则添加@YCF\u L的答案
import java.util.Arrays;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String str = "2+3*i + 1-4*i + -2*i";
String[] nums = Pattern.compile("(-?)\\d+")
.matcher(str)
.results()
.map(MatchResult::group)
.toArray(String[]::new);
System.out.println(Arrays.toString(nums));
}
}
然而,在这里,已经无法识别哪些数字分配给复数的实部,哪些分配给复数的虚部
如果要将数字设置为int而不是字符串:
int[] nums = Pattern.compile("(-?)\\d+")
.matcher(str)
.results()
.map(MatchResult::group)
.mapToInt(Integer::parseInt)
.toArray();
@谢谢你指出这一点。我把它修好了,但让它工作起来并不像我想象的那么容易。
import java.util.Arrays;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String str = "2+3*i + 1-4*i + -2*i";
String[] nums = Pattern.compile("(-?)\\d+")
.matcher(str)
.results()
.map(MatchResult::group)
.toArray(String[]::new);
System.out.println(Arrays.toString(nums));
}
}
int[] nums = Pattern.compile("(-?)\\d+")
.matcher(str)
.results()
.map(MatchResult::group)
.mapToInt(Integer::parseInt)
.toArray();