java string 定长_java String split 按定长分割

Some notes from A. Gonzales about String.split()

Special cases using String.split():

public class StringSplit {

public static void main(String args[]) throws Exception{

System.out.println(

java.util.Arrays.toString(

" s".split(" ")

));

// output : [, , s]

System.out.println(

java.util.Arrays.toString(

"".split("")

));

// output : []

System.out.println(

java.util.Arrays.toString(

" ".split(" ")

));

// output : []

System.out.println(

java.util.Arrays.toString(

" ".split(" ")

));

// output : []

System.out.println(

java.util.Arrays.toString(

" s ".split(" ")

));

// output : [, s]

}

}

It's important to note that an invocation like:

param = req.getParam(...);

String[] words = param.split(" ");

String firstWord = words[0];

will generate a NullPointerException if param.equals(" ").

Using split() with a space can be a problem. Consider the following :

public class StringSplit {

public static void main(String args[]) throws Exception{

String testString = "Real How To"; // extra space

System.out.println(

java.util.Arrays.toString(

testString.split(" ")

));

// output : [Real, , How, To]

}

}

We have an extra element. The fix is to specify a regular expression to match one or more spaces.

public class StringSplit {

public static void main(String args[]) throws Exception{

String testString = "Real How To";

System.out.println(

java.util.Arrays.toString(

testString.split("\\s+")

));

// output : [Real, How, To]

}

}

Since String.split() is based on regular expression, you can make somecomplexoperations with a simple call!

String testString = "{RealHowto}{java-0438.html}{usage of String.split()}";

System.out.println(java.util.Arrays.toString(

testString.split("[{}]")

));

// output : [, RealHowto, , java-0438.html, , usage of String.split()]

// note : extra empty elements :-(

To split a long string into into fixed-length parts. In this example, we split in groups of 3 characters :

String testString = "012345678901234567890";

System.out.println(java.util.Arrays.toString(

testString.split("(?<=\\G.{3})")

));

// output : [012, 345, 678, 901, 234, 567, 890]

To split but keep the separator :

String testString = "RealHowto!java-0438.html!usage of String.split()!";

System.out.println(java.util.Arrays.toString(

testString.split("(?<=[!])")

));

// output : [RealHowto!, java-0438.html!, usage of String.split()!]

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值