Java 从字符串创建int[]数组(仅含正整数)
嘿,我在从字符串创建int[]数组时遇到了问题,它应该只包含字符串中的正整数 它应该这样做:Java 从字符串创建int[]数组(仅含正整数),java,arrays,string,substring,replaceall,Java,Arrays,String,Substring,Replaceall,嘿,我在从字符串创建int[]数组时遇到了问题,它应该只包含字符串中的正整数 它应该这样做: INPUT: ("-5, 20, abc, -20, defg, 45ab67, 23") OUTPUT: [20,23] 我不知道如何删除这个子字符串“45ab67”。我试着用 Character.isDigit(c); and myString.replaceAll("[^\\d,-]", ""); 它没那么好用 提前thx试试 String input = "-5, 20, abc, -2
INPUT: ("-5, 20, abc, -20, defg, 45ab67, 23")
OUTPUT: [20,23]
我不知道如何删除这个子字符串“45ab67”。我试着用
Character.isDigit(c);
and
myString.replaceAll("[^\\d,-]", "");
它没那么好用
提前thx试试
String input = "-5, 20, abc, -20, defg, 45ab67, 23";
String[] arr = input.split(",");
for (String num : arr) {
if (num.trim().matches("\\d+")) {
System.out.println(num);
}
}
1) 把绳子分开,
2) 分析try-catch中的部分(Integer.parseInt(来自每个部分);)
3) 如果没有NumberFormatException,则检查结果是否大于0,如果是,则将其添加到最终列表中这应该可以完成以下工作:
String input = "-5, 20, abc, -20, defg, 45ab67, 23"
String[] inputs = input.split(",");
int[] outputArray;
List<Integer> outputList = new ArrayList<>();
for (String in : inputs) {
if (in.trim().matches("\\d+")) {
outputList.add(Integer.parseInt(in.trim()));
}
}
outputArray = outputList.toArray(new Integer[outputList.size()]);
System.out.println(outputArray);
String input=“-5,20,abc,-20,defg,45ab67,23”
String[]inputs=input.split(“,”);
int[]输出阵列;
List outputList=new ArrayList();
for(字符串输入:输入){
如果(in.trim()匹配(\\d+)){
add(Integer.parseInt(in.trim());
}
}
outputArray=outputList.toArray(新整数[outputList.size()]);
System.out.println(输出阵列);
List List=new ArrayList();
对于(字符串s:myString.split(“*,*”)){
如果(s.匹配(“^[0-9]+$”){
list.add(Integer.parseInt);
}
}
int[]结果=新的int[list.size()];
int i=0;
for(整数v:列表){
结果[i++]=v;
}
试试这个
Matcher m = Pattern.compile("(^| )(\\d+)(,|$)").matcher(s);
while(m.find()) {
System.out.println(m.group(2));
}
int[]getArray(字符串s){
字符串[]部分=s.split(“,”);
ArrayList resultArray=新的ArrayList();
用于(字符串部分:部分){
如果(部分匹配(\\d+)){
add(Integer.parseInt(part));
}
}
int[]result=new int[resultArray.size()];
对于(int i=0;i
你不需要使用“^”和“$”来阻止包含数字的字符串匹配吗?@TimB,字符串。匹配不需要边界符号“^”和$。我愿意相信你,但Javadoc中没有提到:)@TimB,是的,docs没有提到它。如果使用Pattern.compile()
,则需要边界符号。在解析字符串之前,需要修剪()字符串。而outputArray必须是一个整数[]
?感谢您的.trim()
headup。
Matcher m = Pattern.compile("(^| )(\\d+)(,|$)").matcher(s);
while(m.find()) {
System.out.println(m.group(2));
}
int[] getArray(String s) {
String[] parts = s.split(", ");
ArrayList<Integer> resultArray = new ArrayList<>();
for (String part : parts) {
if (part.matches("\\d+")) {
resultArray.add(Integer.parseInt(part));
}
}
int[] result = new int[resultArray.size()];
for (int i = 0; i < resultArray.size(); i++) {
result[i] = resultArray.get(i);
}
return result;
}