***** 字符串替换问题 *****

NBAAllStar 2005-12-30 03:04:23
有下面的一个字符串(包含很多行,符合xml文件的格式):


<value-001>1...end</value-001>
<value-002>222...ee</value-002>
<value-003>333nba...nd</value-003>
......
<value-NNN>nba...nb</value-NNN>


String或者StringBuffer类有什么方法能实现下面的功能:

将“<value-002>”和“</value-002>”之间的内容“222...ee”替换成我想要的字符串(例如“nba-2006”)


也就是能否写一个方法,如:

public string replace(String startStr, String endStr, String myStr) {
//......
}

里面有3个参数:
1。startStr,也就是开始的字符串,如上面例子的“<value-002>”
2。endStr,也就是结束的字符串,如上面例子的“</value-002>”
3。myStr,也就是我想要的字符串,如上面例子的“nba-2006”

3Q
...全文
278 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fog628 2005-12-30
  • 打赏
  • 举报
回复
有startStr, endStr,找出它们的位置,把属于它们位置的这一段字串replace掉就好了
kingofhawks 2005-12-30
  • 打赏
  • 举报
回复
正则?
NBAAllStar 2005-12-30
  • 打赏
  • 举报
回复
AngelInDark(人生就素那浮云) :

感谢你的提示,尽管你遗忘了startStr,并且把“(0,i)”写成了“(0,i+1)”。

下面是我在你的帮助下完成的方法:

========================

/**
* 假设字符串str中包含唯一的一个startStr和endStr,并且startStr在endStr前面,
* 此方法把startStr和endStr之间的内容替换为myStr
*
* 如把:
* 11-22-33<action-023>12345678</action-023>
* 替换为:
* 11-22-33<action-023>abcd==efgh</action-023>
*/
public static String replace(String str, String startStr, String endStr, String myStr) {
//找到startStr的位置i和endStr的位置j
int i = str.lastIndexOf(startStr);
int j = str.lastIndexOf(endStr);

str = str.substring(0, i) + startStr + myStr + str.substring(j, str.length());

return str;
}

AngelInDark 2005-12-30
  • 打赏
  • 举报
回复
找到startStr的位置i和endStr的位置j,
str = str.substring(0,i+1) + myStr + str.substring(j.str.length)
funcreal 2005-12-30
  • 打赏
  • 举报
回复
那就研究DOM和SAX两种解析xml的方法,很多资料的,自己搜吧
NBAAllStar 2005-12-30
  • 打赏
  • 举报
回复
3Q

我是想要一个通用的方法:)
msnsnd 2005-12-30
  • 打赏
  • 举报
回复
将第三个">"和第四个"<"之间的字符串替换掉就可以了。

62,624

社区成员

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

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