最近在做qt的一个小应用,利用webkit将自己写的js代码,在页面加载后注入并执行,目的就是提取该网页的发布时间,新闻出处等等,字符串是取到了,但是整个内容连在一起,做解析时,需要比较字符串的某些中文字段:如 if(Str.indexOf("我要评论")!=-1,我想提取部分内容,需要和常量中文字符串做下比较,这样总是返回-1,网上的一些方法都试了,还是不行,请各位大牛出出主意,谢谢

解决方案 »

  1.   

    使用charCodeAt 将字符串统一进行Unicode 编码之后再indexOf如何?
      

  2.   

    整个字符串是从一个div标签中提取的,中间有span进行分隔var inputs = document.getElementsByTagName("div");
    for(var i = 0; i < inputs.length; i ++){
         if(inputs[i].getAttribute("class") == "info")
         {
             alert(ReplaceTags(inputs[i].innerHTML));
             
         }
    }
    ReplaceTags去掉一些html标签,最后取出来是“2010年01月01日04:48东方早报我要评论(10)”这是在页面取得的数据,我在把它导入本地c++代码之前想做下解析,提取时间,新闻出处,回帖数(动态生成的),因为网页的标签或内容经常改变,我不想在本地程序里面解析,以免关联的太紧,我的js代码是一个配置文件,加载网页时,利用接口灌进去。每个网页的内容组织都不一样,所以js里面要做很多细节处理。这个字符串里,“我要评论”和“()”就是多余的元素,我要过滤掉它们。 比如字符串是str,你做alert(str.charAt(4))一定是显示“年”字,不过你拿这个和常量“年”字做“==”比较,结果一定是-1,所以拿中文常量字符串去做str.indexOf(“我要评论”),永远是-1。知道是编码方式的问题,找个几个转编码的函数,结果还是一样。请高手们给点意见
      

  3.   

    var a="你好啊";var b = a.indexOf("你好啊");alert(b); // 0
      

  4.   


    alert("2010年01月01日04:48东方早报我要评论(10)".charAt(4)=="年");  //outputs true
    alert("2010年01月01日04:48东方早报我要评论(10)".indexOf("东方"));  //outputs 16我这没问题呀!
      

  5.   

    不是这样的啊,“2010年01月01日04:48东方早报我要评论(10)”是从页面标签中取出的innerHTML的内容而已,不是自己在js文件中定义的字符串常量,拿字符串常量去相互比较没有一点问题,而拿页面取出的字符串跟本地的常量字符串比就不行了,总是-1,把该js文件保存为UTF-8,unicode,gb2312编码都不行,晕啊