Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中如何将函数映射到字符串数组?_Java_Trim - Fatal编程技术网

在java中如何将函数映射到字符串数组?

在java中如何将函数映射到字符串数组?,java,trim,Java,Trim,我想拆分一个字符串并修剪新建立的数组中的每个单词。Java中有没有一种简单的函数式方法,可以在不使用循环的情况下将其作为一个单行程序来实现 String[] stringarray = inputstring.split(";"); for (int i = 0; i < stringarray.length; i++) { stringarray[i] = stringarray[i].trim(); } 编辑:更正了周期Andreas的注释您可以通过以

我想拆分一个字符串并修剪新建立的数组中的每个单词。Java中有没有一种简单的函数式方法,可以在不使用循环的情况下将其作为一个单行程序来实现

String[] stringarray = inputstring.split(";");
for (int i = 0; i < stringarray.length; i++) { 
    stringarray[i] = stringarray[i].trim(); 
}

编辑:更正了周期Andreas的注释

您可以通过以下方式进行编辑:

String[] stringarray = inputstring.trim().split("\\s*;\\s*");
正则表达式的解释:

\s*是零倍或更多倍的空白 \s*\s*指定零倍或更多倍的空格,后跟空格;后面可能有零倍或更多的空白
这可能不是纯阵列解决方案,而是java 8解决方案:

String str = " string1 ;string2 ;string3 ;string4;";
String [] s = Arrays.stream(str.split(";")).map(String::trim).collect(Collectors.toList()).toArray(new String[]{});
System.out.println(Arrays.toString(s));

使用streams,您可以做到这一点:

String[] stringarray = Arrays.stream(inputstring.split(";"))
        .map(String::trim)
        .toArray(String[]::new);

首先使用Arrays类将数组转换为流,然后使用map函数,然后再转换回数组


可能是inputstring.split\\s*\\完成了吗?@ernest_k如果输入字符串的开头和/或结尾有空格,比如ab;cd?@Pshemo在拆分inputstring之前对其调用trim。仅供参考:字符串是不可变的,因此代码应该用于int i=0;i