在给定字符串中筛选出由逗号分隔开的字符段并存入列表中

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;


public class zifuchuanshaixuanshuzizifuduan {

	public static void main(String[] args) {
		
      String str = "上传失败!:存在码:8348450470309528211,-1,2.5,-1.8,454aa,hjafj,@,粉红色,83748450309528210,89528212,164,64,654,684684共X个码;";
      
      // 方法1(findNumericFields)示例,可筛选非数字串
      int beg = str.indexOf("码:");
      int end = str.indexOf("共");
      String substring1 = str.substring(beg+2,end);
      List<String> result = findNumericFields(substring1);
      System.out.println(result); // 输出: [8348450470309528211, -1, 2.5, -1.8, 83748450309528210, 89528212, 164, 64, 654, 684684]
     
      // 方法2(stream)示例,不可筛选非数字串
      List<String> result1=Arrays.stream(str.substring(str.indexOf("码:")+2, str.indexOf("共")).split(",")).collect(Collectors.toList());
      System.out.println(result1);// 输出: [8348450470309528211, -1, 2.5, -1.8, 454aa, hjafj, @, 粉红色, 83748450309528210, 89528212, 164, 64, 654, 684684]
      
	}
	
	public static List<String> findNumericFields(String input) {
	    String[] fields = input.split(",");
	    List<String> numericFields = new ArrayList<>();
	    
	    for (String field : fields) {
	        if (field.matches("\\d+")) { // 正则表达式匹配整数或浮点数(去掉非数字字符)
	            numericFields.add(field);
	        } else if (field.matches("-?\\d+(\\.\\d+)?")) { // 匹配负数或带小数点的数
	            numericFields.add(field);
	        }
	    }
	    return numericFields;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值