如何在JAVA中将带逗号分隔值的字符串作为函数参数传递

问题描述 投票:1回答:2

我有一个接受任意数量的INTEGER参数的方法:pages(int,int...)

此方法是选择PDF文件的某些页面。

预订页面存储为字符串类型,如下所示:

String pages = "1,2,3,6,9";

我想将此字符串作为方法的参数,如下所示:

pages(1,2,3,6,9);
java string
2个回答
3
投票

这可以通过流轻松完成:

Stream
  .of(commaSeparated.split(","))
  .mapToInt(Integer::parseInt)
  .toArray();

你可以将它与varargs结合起来得到你想要的东西:

public static void main (String[] args) {
  String commaSeparated = "0,1,2,3,4,5,6,7,8,9";
  int[] arguments =
    Stream
      .of(commaSeparated.split(","))
      .mapToInt(Integer::parseInt)
      .toArray();
  pages(arguments);
}

public static void pages(int... numbers) {
  System.out.println("numbers: " + Arrays.toString(numbers));
}

输出将是:

numbers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

注意:当然在这种特定情况下不需要varargs,只有当你打算用可变数量的int参数调用相同的方法时它才有用,否则你只需将它的签名改为pages(int[] numbers)即可。


1
投票

做这个 :

public class Test {
   public static void main(String..args) {
        String pages = "1,2,3,6,9";
        String[] pagesArr = pages.split(",");
         pages(pagesArr);
   }

  static void pages(String... pagesArr) {
       int[] array = Arrays.asList(pagesArr).stream().mapToInt(Integer::parseInt).toArray();
       for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
       }
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.