字符串分割的奇怪问题?

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


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


好奇怪, 竟然p也能作分割?
...全文
189 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
我更关心的是你的信誉值!

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧