原字符串如下:sqrt{……},其中……为一个字符串
想替换为math.sqrt(……),原来的……要原封不动的包括在小括号里面,请问用java如何来实现?
请问一个关于字符串替换的问题?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- long2007 2011-12-30 11:36关注
如果我没理解错的话,sqrt{}有很多,但括号中的字符串却各不相同是吧?我的方法大概麻烦一些,抛砖引玉吧:
[code="java"]
String first = "sqrt{";
String splitBy = "splitBy";
String text =""; // 这里是你原来的文本,用io读取还是用什么办法自己替换就好。
// 先替换掉{,否则拆分时包括{可能出现正则语法不正确的问题
text = text.replace(first, "splitBy(");
// 根据不易重复的部分拆分开整个字符串
String strings[] = text.split(splitBy);
StringBuilder newText = new StringBuilder();
int count = 0;
// 若sqrt{不是原文本的开头,则先添加上原文本的开头。若是,则被split之后strings[0]为""
if (text.indexOf(splitBy) != 0) {
newText.append(strings[0]);
}
for(String string : strings) {
// strings[0]已经被处理过,跳过它
if (count == 0) {
count ++;
continue;
}
// split之后分隔符都会被忽略掉,加入正确的开头
newText.append("math.sqrt");
// 这里我认为你在sqrt{}中的字符串中不包含其他{}
newText.append(string.replaceFirst("}", ")"));
}
System.out.println(newText.toString());
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 matlab有关常微分方程的问题求解决
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?
- ¥100 求三轴之间相互配合画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考