我有String data="5999999-log(1000)*100/1000-cbrt(log(10000^2))"
。我想将数据字符串拆分为int列表Int[] numbers = {5999999,1000,100,1000,10000,2}
,以便可以将逗号分隔符添加到int列表中的ever数字,例如5,999,999
到int的每个数字列表,我不希望像String[] s = {"-log(",")*","/","-cbrt(log(","^","))"}
这样的字符串,并且数据字符串是可编辑的,用户可以在其中编写表达式来求解,这样我就可以在运行时向每个数字组添加逗号。可能吗?我在Google计算器中看到的位置
答案 0 :(得分:0)
您可以使用正则表达式\\d+
(表示一个或多个数字的字符串)从给定的字符串中获取匹配的字符串,并使用{{将这些匹配的字符串中的每一个转换为int
1}}。
演示:
Integer#parseInt
输出:
import java.util.Arrays;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String data = "5999999-log(1000)*100/1000-cbrt(log(10000^2))";
int[] numbers = Pattern.compile("\\d+") // Pattern to match a string of one or more digits
.matcher(data)
.results()
.map(MatchResult::group) // Map the MatchResult into String
.mapToInt(Integer::parseInt) // Map the String into int
.toArray();
System.out.println(Arrays.toString(numbers));
}
}
如果您要按照某种数字格式将每个[5999999, 1000, 100, 1000, 10000, 2]
格式化为int
,则可以将装箱的String
(即IntStream
)映射到{{1} }格式。
演示:
Stream<Integer>
输出:
Stream<String>