java怎么从字符串数中提取挨着的数字并存入数组?
发布网友
发布时间:2022-04-15 05:45
我来回答
共6个回答
热心网友
时间:2022-04-15 07:15
/*用最简单的基础计算随便写的 ,如果你要是字符串数组,那就循环数组 执行aaa方法……
你改一下返回值也可以,执行完返回一个数组……对象*/
int n2[]; //最终得到的数组,以下得到可变化长度的n2数组
public void aaa(String s){ //传入字符串测试 String s="cd234sn3245ji34fn&^345&%";
String num=""; //储存连续数字的字符串
int n1=0,n3=0,n4=0; //变量,用来进行简单计算
char[] c_1=s.toCharArray(); //将字符串转化为字符数组
for (int i = 0; i < c_1.length; i++) {
int o=Character.getNumericValue(c_1[i]); //字符转化为数字
if (o>=0&&o<=9){
num=num+c_1[i]; //储存连续数字
n4=1; //用来做下面的if判断
if(i!=(c_1.length-1)){ //判断,当达到最后一个时候,不再执行continue;
continue;
}
}
if(n4==1){ //-------------------当n4=1执行
n4=0; //-------------------执行一次 还原为0
n1=Integer.parseInt(num); /------/将连续数字字符串转化为整型
num=""; //-----------------还原为空
int []n2 = new int[n3+1]; //--------创建局部的n2数组
if(n3!=0){ //--------------------/第一次执行因为this.n2没有初始化,所以不执行操作
for (int i1 = 0; i1 < this.n2.length; i1++) {
n2[i1]=this.n2[i1]; //-------------------当this.n2的length!=0时,首先替换局部n2值
}
}
n2[n3]=n1; //-----------将最后一个值 传入参数
this.n2=n2; //----------------- 重新覆盖n2数组
n3++;
}
}
}
//---------------------------------------------main{}测试
热心网友
时间:2022-04-15 08:33
循环字符串,找到第一个为数字的地方,记下位置,继续判断下面一个是否是数字,是的话继续往下判断,直到下一个字符不是数字,然后截取两次索引之间的子串,放入数组,继续循环
热心网友
时间:2022-04-15 10:07
用正则把数字形式的提取出来再循环放入数组中就行了
热心网友
时间:2022-04-15 11:59
ArrayList<Integer> list = new ArrayList<>();
for(String s: str){
Scanner scanner = new Scanner(s);
while(scanner.hasNextInt()) list.add(scanner.nextInt());
scanner.close();
}
Integer[] ia = list.toArray(new Integer[0]);
热心网友
时间:2022-04-15 14:07
跟提取字符串中的数字一样的道理啊 用正则表达式简单点
热心网友
时间:2022-04-15 16:31
使用正则“\D+(\d+)\D+”