急,高分求添几行小代码(StringTokenizer类的吧)!

zhgc2003 2004-08-11 03:57:13
package u;

public class U
{
public U()
{
}
public static void main(String[] args)
{
U u1 = new U();
String str = "abcdefg/username=$username&userpass=$userpass&usersex=1";
String[] strs = u1.parse(str);
String temp = "";
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
temp += strs[i];
}
System.out.println(temp);
}

private String[] parse(String str)
{
return null;
}
}
要求效果:
输入:
abcdefg/username=$username&userpass=$userpass&usersex=1

输出:
abcdefg/username=
$username
&userpass=
$userpass
&usersex=1
数组内所有元素相加,还能得到:abcdefg/username=$username&userpass=$userpass&usersex=1

帮忙添一下代码,万分感谢!
...全文
230 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
debug148 2004-11-21
  • 打赏
  • 举报
回复
zhgc2003 2004-08-12
  • 打赏
  • 举报
回复
问题解决,代码共享:
package u;

import java.util.*;

public class U
{
public U()
{
}

public static void main(String[] args)
{
U u1 = new U();
String str = "abcdefg/username=$username&userpass=$userpass&usersex=1";
String[] strs = u1.parse(str);
String temp = "";
String str2 = "";

for (int i = 0; i < strs.length; i++)
{
str2 = strs[i];
String[] sts = u1.parseB(str2);

for (int j = 0; j < sts.length; j++)
{
System.out.println(sts[j]);
}

temp += strs[i];
}
System.out.println("原字符串的和:" + temp);
}

private String[] parse(String str)
{
StringTokenizer stk = null;
try
{
stk = new StringTokenizer(str, "$");
}
catch (Exception ex)
{
ex.printStackTrace();
}
ArrayList list = new ArrayList();
//添加第一个值
list.add(stk.nextToken());
//从第二个值开始累加
while (stk.hasMoreTokens())
{
list.add("$" + stk.nextToken());
}
String[] strs = new String[list.size()];
list.toArray(strs);
return strs;
}

private String[] parseB(String str)
{
StringTokenizer stk = null;
try
{
stk = new StringTokenizer(str, "&");
}
catch (Exception ex)
{
ex.printStackTrace();
}
ArrayList list = new ArrayList();
//添加第一个值
list.add(stk.nextToken());
//从第二个值开始累加
while (stk.hasMoreTokens())
{
list.add("&" + stk.nextToken());
}
String[] strs = new String[list.size()];
list.toArray(strs);
return strs;
}

}
zhgc2003 2004-08-12
  • 打赏
  • 举报
回复
to: Acylas(Acylas)
您的方法可以,但是分隔符显示成这个样子才行啊~
abcdefg/username=
$username
&userpass=
$userpass
&usersex=1

不显示分隔符字符串少东西了,用true显示成下面这个样子,郁闷啊!
abcdefg/username=

$

username

&

userpass=

$

userpass

&

usersex=1

abcdefg/username=$username&userpass=$userpass&usersex=1

zhgc2003 2004-08-12
  • 打赏
  • 举报
回复
package u;

import java.util.*;

public class U
{
public U()
{
}

public static void main(String[] args)
{
U u1 = new U();
String str = "abcdefg/username=$username&userpass=$userpass&usersex=1";
String ss = "";
String[] strs = u1.parse(str);
String temp = "";

for (int i = 0; i < strs.length; i++)
{
ss = strs[i];
String[] sts = u1.parseB(ss);
for (int j = 0; j < sts.length; j++)
{
if (sts[j] == null || sts[j].equals("")) {
System.out.print("空");
}
System.out.println(sts[j]);
}
temp += strs[i];
}
System.out.println("原字符串: " + temp);
}

private String[] parse(String str)
{
StringTokenizer stk = new StringTokenizer(str, "$");
String[] strsB = new String[stk.countTokens() * 2];

int j = 0;
String strTmp;
while (stk.hasMoreTokens())
{
strTmp = stk.nextToken();
if (j == 0)
{
strsB[j] = strTmp.substring(0, strTmp.indexOf("$") + 1);
j++;
strsB[j] = strTmp.substring(strTmp.indexOf("$") + 1);
j++;
}
else
{
strsB[j] = strTmp.substring(0, strTmp.indexOf("$") + 1);
j++;
strsB[j] = "$" + strTmp.substring(strTmp.indexOf("$") + 1);
j++;
}
}
return strsB;
}

private String[] parseB(String ss)
{
StringTokenizer stk = new StringTokenizer(ss, "&");
String[] strsB = new String[stk.countTokens() * 2];

int j = 0;
String strTmp;
while (stk.hasMoreTokens())
{
strTmp = stk.nextToken();
if (j == 0)
{
strsB[j] = strTmp.substring(0, strTmp.indexOf("&") + 1);
j++;
strsB[j] = strTmp.substring(strTmp.indexOf("&") + 1);
j++;
}
else
{
strsB[j] = strTmp.substring(0, strTmp.indexOf("&") + 1);
j++;
strsB[j] = "&" + strTmp.substring(strTmp.indexOf("&") + 1);
j++;
}
}
return strsB;
}

}
显示结果:


abcdefg/username=



$username



&userpass=



$userpass



&usersex=1

原字符串: abcdefg/username=$username&userpass=$userpass&usersex=1

为什么多了一倍为空的。。。。啊???
Acylas 2004-08-12
  • 打赏
  • 举报
回复
楼主真是懒不动下脑,那你怎么提供能力啊?
private static String[] parse(String str) {
java.util.StringTokenizer stk1 = new java.util.StringTokenizer(str, "&");
java.util.StringTokenizer stk2;
java.util.ArrayList list = new java.util.ArrayList();
while (stk1.hasMoreTokens()) {
stk2 = new java.util.StringTokenizer(stk1.nextToken(), "$");
while (stk2.hasMoreTokens())
list.add(stk2.nextToken());
}
String[] strs = new String[list.size()];
list.toArray(strs);
return strs;
}
zhgc2003 2004-08-11
  • 打赏
  • 举报
回复
难道非要用StringTokenizer来做吗?
zhgc2003 2004-08-11
  • 打赏
  • 举报
回复
要求效果:
输入:
abcdefg/username=$username&userpass=$userpass&usersex=1

输出:
abcdefg/username=
$username
&userpass=
$userpass
&usersex=1
zcwhgj 2004-08-11
  • 打赏
  • 举报
回复
这里是j2me版块啊.j2me没有这个类:StringTokenizer,呵呵.
zhgc2003 2004-08-11
  • 打赏
  • 举报
回复
stk.countTokens() * 2是什么意思?
zhgc2003 2004-08-11
  • 打赏
  • 举报
回复
显示的结果是:
abcdefg/username=
$username
userpass=
$userpass
usersex=
1
mingjava 2004-08-11
  • 打赏
  • 举报
回复
用StringTokenizer先按照$来分出String[]来 然后再把含有&的用StringTokernizer再分一次 最后返回一个String[]
zhgc2003 2004-08-11
  • 打赏
  • 举报
回复
请加注视,谢谢喽
fim 2004-08-11
  • 打赏
  • 举报
回复
String str = "abcdefg/username=$username&userpass=$userpass&usersex=1";
StringTokenizer st = new StringTokenizer(str,"=");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Acylas 2004-08-11
  • 打赏
  • 举报
回复
private static String[] parse(String str) {
java.util.StringTokenizer stk = new java.util.StringTokenizer(str, "&");
String[] strs = new String[stk.countTokens() * 2];
int i=0;
String strTmp;
while (stk.hasMoreTokens()) {
strTmp = stk.nextToken();
strs[i] = strTmp.substring(0, strTmp.indexOf("=") + 1);
i++;
strs[i] = strTmp.substring(strTmp.indexOf("=") + 1);
i++;
}
return strs;
}

62,614

社区成员

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

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