请教一个字符串解析问题

danceflash 2003-08-29 02:35:50
假设我有一个 字符串模型 pattern,还有一个符合这个模型的字符串 str
假设 pattern = "${a}_${b}-${cd}_${p}"
   str = "test_text-comp_int"

请问,我用什么方法能够解析出:
${a} = test
${b} = text
${cd} = comp
${p} = int

不是用java一个一个比对,因为pattern和str都是不可预期的,只有一个规定,就是变量的形式一定为:"${...}"

是用正则表达式吗?还是别的什么方法?

请大家帮忙,谢谢 ^_^
...全文
58 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alemjann 2003-09-01
  • 打赏
  • 举报
回复
http://www.fanqiang.com/a4/b5/20011113/0808001561.html
danceflash 2003-09-01
  • 打赏
  • 举报
回复
To Eraserpro(工作好难找啊!租房子好贵啊!...):
你的思路我大致明白,确实有些繁琐,我去试试看


To Kick_hotdog(khd):
在下对正则表达式了解不多,请问能否告诉我我这种情况应该如何用java编写正则表达式?谢谢 ^_^
danceflash 2003-09-01
  • 打赏
  • 举报
回复
多谢各位帮忙
我想已经找到思路了,谢谢 ^_^
popularboy1wbr 2003-08-30
  • 打赏
  • 举报
回复
up
Kick_hotdog 2003-08-30
  • 打赏
  • 举报
回复
这样变化的字符串,肯定需要使用正则表达式来查找。
selfboss 2003-08-30
  • 打赏
  • 举报
回复
应该是以取字串的形式,然后存入一个数组中,即可。
Eraserpro 2003-08-29
  • 打赏
  • 举报
回复
用StringTokenizer,以${做为分割符,产生一个Enumeration,再对每一个枚举元素进行判断,如果最后一位不是}就把最后一位提出来做为匹配用的操作符,这样又可以产生一个String[]或是ArrayList,接下来对这个String[]操作,把每一个元素在实际字符串中的位置记录下来,用substring就可以得到结果了。

一点意见,仅供参考。(好像是烦了一点)
danceflash 2003-08-29
  • 打赏
  • 举报
回复
up一下
大家帮帮忙的说 ^_^
danceflash 2003-08-29
  • 打赏
  • 举报
回复
谢谢

不过我的意思是:
已知:
pattern = "${a}_${b}-${cd}_${p}"
str = "test_text-comp_int"

解析出:
${a} = test
${b} = text
${cd} = comp
${p} = int

而且,在实际应用时,我是不知道在模式中出现的变量是a(${a})还是N1(${N1})或者是别的什么
我就是希望在不可预知变量名以及模式的情况,根据用户提供的模式和字符串
从字符串中提取出用户在模式中定义的变量在字符串中对应的那段字符串

应该如何做呢?
langjianjun 2003-08-29
  • 打赏
  • 举报
回复
UP
老土豆T 2003-08-29
  • 打赏
  • 举报
回复
用字符串替换。。当然 你也可以用正则表达

public static String Replace(String source, String oldString, String newString)
{
if(source == null)
{
return null;
}
StringBuffer output = new StringBuffer();
int lengOfsource = source.length();
int lengOfold = oldString.length();
int posStart;
int pos;
for(posStart = 0; (pos = source.indexOf(oldString, posStart)) >= 0; posStart = pos + lengOfold)
{
output.append(source.substring(posStart, pos));
output.append(newString);
}

if(posStart < lengOfsource)
{
output.append(source.substring(posStart));
}
return output.toString();
}

在这里为 Replace(str ,‘${a}’,test)

62,614

社区成员

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

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