tokenize java,Java split string - Java tokenize string examples - 入门小站-rumenz.com

对于专门从事Web应用程序的Java程序员来说,将字符串拆分为数组是一项非常常见的任务。 在Web应用程序中,很多时候我们必须以CSV格式传递数据,或者基于$ , #或其他字符等其他分隔符来分隔数据。

在进一步使用此数据之前,必须将其拆分为单独的字符串标记。 在给定的示例中,我们将学习split string into arraylist或array。

1. Java String split – StringTokenizer

在Java中使用StringTokenizer拆分字符串确实很容易使用,并且在Java中已经存在很长时间了。

1.1. Single delimiter

用空格分割字符串的 Java程序示例 。String str = "I am sample string and will be tokenized on space";

StringTokenizer defaultTokenizer = new StringTokenizer(str);

System.out.println("Total number of tokens found : " + defaultTokenizer.countTokens());

while (defaultTokenizer.hasMoreTokens())

{

System.out.println(defaultTokenizer.nextToken());

}

System.out.println("Total number of tokens found : " + defaultTokenizer.countTokens());

Program output.Total number of tokens found : 10

I

am

sample

string

and

will

be

tokenized

on

space

Total number of tokens found : 0

我们看到开始时令牌的数量为10,并且在获取所有令牌后,计数减少为0。

1.2. Multiple delimiters

这是真正的好用例。 它允许您在分隔符可以不止一个的情况下分割字符串。

String url = "https://howtodoinjava.com/java-initerview-questions";

StringTokenizer multiTokenizer = new StringTokenizer(url, "://.-");

while (multiTokenizer.hasMoreTokens())

{

System.out.println(multiTokenizer.nextToken());

}

Program output.https

howtodoinjava

com

java

initerview

questions

As java docs says, StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

2. Java split string – String.split()

与使用StringTokenizer相比, string array形式返回,我们可以随意使用它。

用定界符逗号分隔java中的字符串的程序。String[] tokens = "I,am ,Legend, , oh ,you ?".split(",");

for (String token : tokens)

{

System.out.println(token);

}

Program output.I

am

Legend

//Empty token

oh //Space in starting

you ?

上面的代码确实易于使用,但是正如我们在输出中看到的那样,在处理令牌时需要格外小心。 它返回空令牌,并且默认情况下不修剪令牌。 您需要逐个标记地执行这些特定的处理标记。

3. String split – StringUtils.split()

StringUtils.split()与上述方法非常相似,它还返回String[]作为输出。 我们需要像前面的代码中那样处理字符串数组。 唯一的好处就是code is faster 。String[] tokens = StringUtils.split("I,am ,Legend, , oh ,you ?",",");

for (String token : tokens)

{

System.out.println(token);

}

Program output.I

am

Legend

//Empty token

oh //Space in starting

you ?

4. Split string – Guava Splitter

Splitter最好。 在编写时看起来不错,也可以重复使用。 您创建一个拆分器,并根据需要多次重复使用它。 因此,对于类似的用例,它有助于实现分离器应用程序的统一逻辑。

另一个好处是,它在构建分离器本身时还提供了一些有用的方法,从而消除了创建令牌本身后的大量后续工作,如我们在上面的示例中看到的。

要构建漂亮的拆分器,请编写如下代码:Splitter niceCommaSplitter = Splitter.on(',').omitEmptyStrings().trimResults();

现在,您可以根据需要在代码中的任何位置使用它:Splitter niceCommaSplitter = Splitter.on(',').omitEmptyStrings().trimResults();

Iterable tokens2 = niceCommaSplitter.split("I,am ,Legend, , oh ,you ?");

for(String token: tokens2){

System.out.println(token);

}

Program output.I

am

Legend

oh

you ?

或者,您可以直接将其作为maven dependency包括在内。

com.google.guava

guava

17.0

如果您对将字符串拆分为数组这个非常具体的问题有其他更好的解决方案,请分享您的想法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值