简体   繁体   中英

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

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

The data is like

China 12351235123 Korea 123532523 USA 12341235123

I just need those integer data as an integer to find the first digit of the integers. I know how to find the first digit, but I don't know how I can pick up only the integer data.

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);
}

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);
    }

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.

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);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM