难以弄清楚 java 中拆分函数的工作原理
Having difficultly in figuring out the working of split function in java
我要拆分的字符串是“他是一个非常非常好的男孩,不是吗?”。
当我仅使用拆分函数时,输出还在字符串中的 "boy," 之后打印了 space。为了删除它,我在代码中放置了一个 if 条件,然后代码在 boy 之后不打印任何内容。
谁能告诉我为什么会这样?另外,如果有比使用 Guava 更好的方法来解决这个问题。
public class Solution {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String s=scan.nextLine();
String []tokens = s.trim().split("[\s,'?]");
int n = tokens.length;
System.out.println(n);
for(int i=0;i<tokens.length;i++)
{
if(tokens[i].charAt(0)==' ')
{
continue;
}
System.out.println(tokens[i]);
}
}
}
您告诉 split
从该列表中拆分 单个 字符。如果您希望它拆分为一个 或多个 (例如,这些字符的运行),请在其后添加 +
以表示 "one or more of the thing before":
String []tokens = s.trim().split("[\s,'?]+");
// Here ----------------------------------^
(FWIW,在要拆分的字符列表中包含 '
似乎有点奇怪,但我们不知道您的用例,所以...)
检查这个解决方案。
String str="He is a very very good boy, isn't he?";
String[] Val = str.split("[' ,@!_.?]+");
System.out.println(Val.length);
for(String token :Val) {
System.out.println(token);}}
我要拆分的字符串是“他是一个非常非常好的男孩,不是吗?”。 当我仅使用拆分函数时,输出还在字符串中的 "boy," 之后打印了 space。为了删除它,我在代码中放置了一个 if 条件,然后代码在 boy 之后不打印任何内容。
谁能告诉我为什么会这样?另外,如果有比使用 Guava 更好的方法来解决这个问题。
public class Solution {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String s=scan.nextLine();
String []tokens = s.trim().split("[\s,'?]");
int n = tokens.length;
System.out.println(n);
for(int i=0;i<tokens.length;i++)
{
if(tokens[i].charAt(0)==' ')
{
continue;
}
System.out.println(tokens[i]);
}
}
}
您告诉 split
从该列表中拆分 单个 字符。如果您希望它拆分为一个 或多个 (例如,这些字符的运行),请在其后添加 +
以表示 "one or more of the thing before":
String []tokens = s.trim().split("[\s,'?]+");
// Here ----------------------------------^
(FWIW,在要拆分的字符列表中包含 '
似乎有点奇怪,但我们不知道您的用例,所以...)
检查这个解决方案。
String str="He is a very very good boy, isn't he?";
String[] Val = str.split("[' ,@!_.?]+");
System.out.println(Val.length);
for(String token :Val) {
System.out.println(token);}}