我是些错了
String str="(MgO+CaO)*1.24+79";
String str2="MgO+CaO";然后 我用if(str.indexOf(str2)>=0)
            str=str.replaceAll(str2,"78");大家可能误会了我的意思
我是想说
str2应该是在str中的 
可是结果并不是这样啊。
好像indexOf不能搜索类似"MgO+CaO"这样的字符串啊
怎么办啊

解决方案 »

  1.   

    不是可以吗
    str.indexOf(str2)返回的是1,
    不过你用的replaceAll()有问题
    replaceAll()中要求第一个参数是
    正则表达式,而你的+号在正则表达式
    重视有含义的,所以你需要对他进行转义
    写成这样可以完成你的要求
    System.out.println(str2.replaceAll("(MgO\\+CaO)","78"));
    这样就行了
      

  2.   

    indexOf是可以的
    但是repalceAll这个函数,好像不可以:(
    我看了一下,好像是因为+号:(
      

  3.   

    刚吃完饭。public class Test {
        public static void main(String[] args) {
    String str="(MgO+CaO)*1.24+79";
    String str2="MgO\\+CaO";
    //if(str.indexOf(str2)>=0)多余
    System.out.println(str.indexOf(str2));//-1因为此处参数非正则表达式
              str=str.replaceAll(str2,"78");//第一个参数是正则式,+是特殊字符,需转义
              System.out.println(str);
        }
    }可以了吧!
      

  4.   

    现在,我是知道公式有这种基本指标民,在程序中,因为有很多计算公式,有的公式中的基本指标名是如Si Fe之类的,而有的就是向上面的 MgO+CaO之类的特殊情况阿。在程序中怎么处理阿,一旦有就用基本指标的值替换它的名。我这样写的:
     for(int l=0;l<j;l++)   //循环匹配基本指标字符串,
    {  if(formula.indexOf(data[l].itemname)>=0)   //用值替换基本指标名
       formula=formula.replaceAll(data[l].itemname,data[l].itemresult[k]);
     }
    //下面是用jep对formula数字字符串进行计算。