.replace()的问题

时间:2016-03-26 17:52:05

标签: javascript regex

我正在尝试删除带有空格的字符串中的所有“,”。目前我有以下代码,其中tweettxt只是一个包含多个hello和bye实例的数组:

// function for getting the frequency of each word within a string
function getFreqword(){
  var string = tweettxt.toString(), // turn the array into a string
      split = string.split(" "), // split the string 
      words = {};

  for (var i=0; i<split.length; i++){
    if(words[split[i]]===undefined){
      words[split[i]]=1;
    } else {
      words[split[i]]++;
    }
  }
  return words;
}

返回:

{ hello: 50, bye: 36, 'bye,hello': 6 }

为了消除'bye,hello'的出现,我遇到并在第4行split = string.replace(/,/g, "")上实现了.replace而不是.split,但是这会返回:

{ h: 56, e: 98, l: 112, o: 56, ' ': 91, b: 42, y: 42 }

我的理解是.replace只会用“”取代,但显然并非如此。有人可以提供任何帮助吗?

编辑:

代码.replace

// function for getting the frequency of each word within a string
function getFreqword(){
  var string = tweettxt.toString(), // turn the array into a string
      split = string.replace(/,/g, ""), // split the string 
      words = []; // array for the words

  for (var i=0; i<split.length; i++){
    if(words[split[i]]===undefined){
      words[split[i]]=1;
    } else {
      words[split[i]]++;
    }
  }
  return words;
}

1 个答案:

答案 0 :(得分:2)

string.replace(/,/ g,&#34;&#34;)只返回不带逗号的相同字符串(不是数组)。 此外,如果您需要计算基于od空格的单词,则应使用空格替换逗号(&#34;&#34;)。 所以你需要先替换逗号,然后再进行拆分。 E.g:

function getFreqword(){
var string = tweettxt.toString(), // turn the array into a string
    sanitizedString = string.replace(/,/g, " "),
    split = sanitizedString.split(" "), // split the string
    words = {};

    for (var i=0; i<split.length; i++){
        if(words[split[i]]===undefined){
            words[split[i]]=1;
         } else {
            words[split[i]]++;
        }
    }
    return words;
}