iteye_17666 2011-12-29 15:51
浏览 224
已采纳

请问一个关于字符串替换的问题?

原字符串如下:sqrt{……},其中……为一个字符串
想替换为math.sqrt(……),原来的……要原封不动的包括在小括号里面,请问用java如何来实现?

  • 写回答

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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥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语言,请帮蒟蒻写一个题的范例作参考