字符串分割的奇怪问题?

Sylix 2004-09-10 01:30:07
我用StringTokenizer按“%p”来进行分割
字符串
dreer p we %p ewew%p ewew


结果竟然分割成这样:
dreer
we
ewew
ewew


好奇怪, 竟然p也能作分割?
...全文
127 点赞 收藏 11
写回复
11 条回复
baffling 2004年09月10日
gz
回复 点赞
hpy121 2004年09月10日
自己写一个函数!
public final static String SPLIT = "%p ";

private String[] getElements( String str, int len )
{
String[] elements = new String[len];
int begPos = 0;
int endPos = -1;
int nElem = 0;
do
{
endPos=str.indexOf( SPLIT, endPos+1 );
if(endPos>-1)
{
elements[nElem] = str.substring( begPos,endPos );
begPos = endPos + 1;
nElem ++;
}
}while ( endPos > -1 );
return elements;
}


private int countElements(String str)
{
int count = 0;
int pos = -1;
do
{
pos=str.indexOf(SPLIT, pos+1);
if( pos > -1 )
{
count ++;
}
}
while ( pos >- 1 );
return count;
}

回复 点赞
registered 2004年09月10日
推荐楼上兄弟的办法
StringTokenizer 在 1.4 以后已经被 deprecate 了
现在解决 String 类问题应该用 Regular Expressions
回复 点赞
jackkui 2004年09月10日
這是我的測試程序,完全正確阿
import java.util.regex.*;

public class RG
{
public static void main(String[] args)
{

String s = "123 %p%alkjsdfj%palskdjf p lajsdf";
String[] r = s.split("%p");
System.out.println("/**********************************/");
System.out.println(s);
for(int i = 0 ; i < r.length; i++)
{
System.out.println(r[i]);
}
}
}
回复 点赞
westwin 2004年09月10日
并且不推荐使用咯........
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.
回复 点赞
westwin 2004年09月10日
请看sun的文档说明
public StringTokenizer(String str, String delim)

Constructs a string tokenizer for the specified string. The characters in the delim argument are the delimiters for separating tokens. Delimiter characters themselves will not be treated as tokens.

Parameters:
str - a string to be parsed.
delim - the delimiters.

这里的意思是说把delim分隔符里的每个字符都当作分隔符来对待,所以会出现上述的结果!!
解决的办法用split;
请看老贴http://community.csdn.net/Expert/topic/2965/2965683.xml?temp=.2673761
回复 点赞
drugon 2004年09月10日
up
回复 点赞
longshenwang 2004年09月10日
java 把dreer p we %p ewew%p ewew 这个译为
dreer%p%we%p%ewew%p%ewew了 即一个空格相当于一个%符号

回复 点赞
flyingbug 2004年09月10日
呵呵,一楼的天平够实在的啊
回复 点赞
lukan 2004年09月10日
应该是不可能的
楼主最好把程序贴出来
回复 点赞
haroyy 2004年09月10日
我更关心的是你的信誉值!
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告