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

时间:2019-03-28 11:07:39

标签: java string

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

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

以如下字符串类型存储的书页:

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

我希望将此字符串作为方法的参数,看起来像:

pages(1,2,3,6,9);

2 个答案:

答案 0 :(得分: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参数调用同一方法时,它才有用,否则您可以将其签名更改为{{ 1}}。

答案 1 :(得分: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]);
       }
   }
}