How to pick up only integer data from an ArrayList of String

前端 未结 4 1560
青春惊慌失措
青春惊慌失措 2021-01-29 11:48

I read a text file and put the data into an ArrayList of String.

The data is like

China 12351235123 Korea 123532523 USA 1234123         


        
相关标签:
4条回答
  • 2021-01-29 12:26

    You can use regex and would be careful that not all that numbers can be in a integer range... so there for the list of longs in the code below

    Example:

    public static void main(String[] args) {
        List<Long> longList = new ArrayList<Long>();
        Pattern pattern = Pattern.compile("\\w+([0-9]+)");// regex pattern
        for (String string : listOfCountriesAndNumbers) {
            Matcher matcher = pattern.matcher(string);
            for (int i = 0; i < matcher.groupCount(); i++) {
                matcher.find();
                longList.add(Long.parseLong(matcher.group()));
            }
        }
        System.out.println(longList);
    }
    
    0 讨论(0)
  • 2021-01-29 12:30

    I am assuming that your ArrayList is of type String. replaceAll() will take out anything that isn't a number(0-9)

    ArrayList<String> countrys = new ArrayList<String>();
    countrys.add("China 12351235123");
    countrys.add("Korea 123532523");
    countrys.add("USA 12341235123");
    
    for(String c:countrys){
        String number = c.replaceAll("[^0-9]", "");
        System.out.println(number);
    }
    
    0 讨论(0)
  • 2021-01-29 12:37

    Try this :

      // Creation of ArrayList of string
      ArrayList<String> obj = new ArrayList<String>();
    
      // arrayList of string
      obj.add("China 12351235123");
      obj.add("Korea 123532523");
      obj.add("USA 12341235123");
    
    
        Iterator<String> iterator = obj.iterator();
        String str;
        String[] split_str;
        long  value;
        while (iterator.hasNext()) {
            str = iterator.next().toString();
            split_str = str.split(" ");
            String split_2 = split_str[1];
            value = Long.parseLong(split_2);
            System.out.println(value);
        }
    
    0 讨论(0)
  • 2021-01-29 12:43

    You can use Regex as SLY suggested, or you can go over your list and split the object into two parts: 'country' and 'number' using:

    for(String s : array){
        String[] parts = s.split(" ");
        long number = Long.parseLong(parts[1]);
        System.out.println(number);
    }
    

    NOTE: the invariant is that each element contains two parts with the delimiter 'white space', and the second part is a number.

    0 讨论(0)
提交回复
热议问题