站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题[炫啊]关于StringTokenizer的问题,求助!

[炫啊]关于StringTokenizer的问题,求助!

摘要: [炫啊]关于StringTokenizer的问题,求助!


//Test.java
import java.util.*;
public class Test
{
static public void main(String[] args)
{
System.out.println("---------------");
String s = "//u4e07//u5b50//u534e liushang";
String c = "lkjhgj liushang";
String s1;
String c1;
s1 = convertBackFromUnicode(s);
c1 = convertBackFromUnicode(c);
System.out.println(s);
System.out.println(c);
System.out.println(s1);
System.out.println(c1);
}
public static String convertBackFromUnicode(String str)
{
int i;
int flag = 0;
if (str == null)
{
return null;
}
i = str.indexOf("//u",0);
if(str.indexOf("//u") == -1)
{
return str;
}
StringTokenizer st = new StringTokenizer(str, "//u", false);
if (st == null)
{
return null;
}
StringBuffer buf = new StringBuffer(200);
if (buf == null)
{
return null;
}
while(st.hasMoreTokens())
{
String string = st.nextToken();
System.out.println("The value of the next Token " + string);
if(string.length() > 4 )
{
try
{
if (i > 0 && flag == 0)
{
buf.append(string);
flag = 1;
}
else
{
buf.append(((char)Integer.parseInt(string.substring(0, 4), 16)));
buf.append(string.substring(4));
}
}
catch(Exception e)
{
buf.append(string);
}
}
else
{
if(string.length() == 4)
{
try
{
if (i > 0 && flag == 0)
{
buf.append(string);
flag = 1;
}
else
buf.append(((char)Integer.parseInt(string, 16)));
}
catch(Exception e)
{
buf.append(string);
}
}
else
{
flag = 1;
buf.append(string.substring(0));
}
}
}
return buf.toString();
}
}
运行后,含"/u"的字符串后面的"liushang"变成了"lishang",少了一个"u",怎么才能避免这个问题呢?


各路高手,请帮个忙啊,谢谢!


这也太长了。做下慢慢看。


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

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

String[] result = "this is a test".split("//s");
for (int x=0; x System.out.println(result[x]);
输出以下字符串:

this
is
a
test



up


问题已经解决了
到现在才有时间上来结贴,见谅!


↑返回目录
前一篇: 如何模拟花生壳软件功能, 取得 adsl 联接 internet 的出口 IP 呢?
后一篇: 谁有“协议封装”的例子?