java--浅谈分割字符串的使用

来源:互联网 发布:荒岛特训 知乎 编辑:程序博客网 时间:2024/06/05 17:23

   提到分割字符串大家很容易想到String自带的分割方法如下:

     public String[] split(String regex,int limit)
根据匹配给定的正则表达式来拆分此字符串。

此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

public String[]split(String regex)

根据给定的正则表达式的匹配来拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。

以上用法是比较简单实用的.下面介绍一下java中保留的一个分解字符串的类.

java.util
类 StringTokenizer

java.lang.Object  继承者 java.util.StringTokenizer
所有已实现的接口:
Enumeration<Object>

public class StringTokenizer
extends Object
implements Enumeration<Object>

string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。

可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集合。

StringTokenizer 的实例有两种行为方式,这取决于它在创建时使用的 returnDelims 标志的值是true 还是false

  • 如果标志为 false,则分隔符字符用来分隔标记。标记是连续字符(不是分隔符)的最大序列。
  • 如果标志为 true,则认为那些分隔符字符本身即为标记。因此标记要么是一个分隔符字符,要么是那些连续字符(不是分隔符)的最大序列。

StringTokenizer 对象在内部维护字符串中要被标记的当前位置。某些操作将此当前位置移至已处理的字符后。

通过截取字符串的一个子串来返回标记,该字符串用于创建 StringTokenizer 对象。

下面是一个使用 tokenizer 的实例。代码如下:

     StringTokenizer st = new StringTokenizer("this is a test");     while (st.hasMoreTokens()) {         System.out.println(st.nextToken());     } 

输出以下字符串:

     this     is     a     test 

下面的示例阐明了如何使用 String.split 方法将字符串分解为基本标记:

     String[] result = "this is a test".split("\\s");     for (int x=0; x<result.length; x++)         System.out.println(result[x]); 

输出以下字符串:

     this     is     a     test 

从API可以得知,分割时StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。

例子:

代码:
String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
StringTokenizer st = new StringTokenizer(s,"=",true);
System.out.println( "Token Total: " + st.countTokens() );
while( st.hasMoreElements() ){
System.out.println( st.nextToken() );
}
结果为:
Token Total: 19
The
=
Java
=
platform
=
is
=
the
=
ideal
=
platform
=
for
=
network
=
computing

java-API中 不推荐使用此类.原文如下:StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用Stringsplit 方法或 java.util.regex 包。 



0 0
原创粉丝点击