【问题标题】:How to pick up only integer data from an ArrayList of String如何从字符串的 ArrayList 中仅获取整数数据
【发布时间】:2016-08-26 04:07:09
【问题描述】:

我读取一个文本文件并将数据放入ArrayListString

数据是这样的

China 12351235123 Korea 123532523 USA 12341235123

我只需要那些整数数据作为整数来查找整数的第一个数字。我知道如何找到第一个数字,但我不知道如何只获取整数数据。

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。
  • String 的 ArrayList 不接受整数。它可能是对象的 ArrayList。是吗 ? OR "China 12351235123" 是单个字符串?
  • 也许This 可以提供帮助

标签: java arraylist integer double benfords-law


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    我假设您的ArrayListString 类型。 replaceAll() 将取出任何不是数字(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);
    }
    

    【讨论】:

    • 非常感谢!这可能是一种方式!
    • 我不需要那些字符串数据,但我只需要整数数据来找到它们的第一位。
    【解决方案3】:

    您可以使用正则表达式,但要注意并非所有数字都可以在整数范围内......所以下面的代码中的 long 列表

    示例:

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

    【讨论】:

      【解决方案4】:

      您可以按照 SLY 的建议使用 Regex,或者您可以查看列表并将对象分成两部分:“国家”和“号码”,使用:

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

      注意:不变量是每个元素包含两个部分,分隔符为“空格”,第二部分是一个数字。

      【讨论】:

      • 我不需要那些字符串数据,但我只需要整数数据来找到它们的第一位。
      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2012-11-01
      相关资源
      最近更新 更多