如何使用拆分从字符串内的单词中拆分逗号和句点?

时间:2018-06-12 21:08:00

标签: javascript arrays split

我正在尝试使用其他内容更改字符串中的特定单词。例如,我想将let name = 'Hi, my name is John.';中的“John”更改为“Jack”。

我知道如何用字或字符分割字符串。我也知道如何删除字符串中的逗号,句点和其他符号。但是,如果我用分隔符(“”)分割给定的字符串,我将拥有'John'。这是我不想要的。 (我知道我可以用'杰克'切换'约翰'。但是假设我在一个对象中有一个键和值对,我使用的是名字的值{父亲:杰克,母亲:苏珊,......}

我不知道如何逐字逐句地分隔字符串,包括逗号和句号。

例如,如果给我一个字符串输入:
'Hi, my name is John.'

我想将输入拆分如下:
['Hi', ',', 'my', 'name', 'is', 'John', '.']

有谁知道怎么做?

以下是我正在努力的挑战。

  

创建一个不接受任何参数的函数检查器。 censor将返回一个接受两个字符串或一个字符串的函数。当给出两个字符串时,返回的函数将成对保留在两个字符串上,以备将来使用。当给出一个字符串时,返回的函数将返回相同的字符串,除了第一个字符串(已保存的对)的所有实例都将被替换为第二个字符串(已保存的对)。

//Your code here

const changeScene = censor();
changeScene('dogs', 'cats');
changeScene('quick', 'slow');
console.log(changeScene('The quick, brown fox jumps over the lazy dogs.')); // should log: 'The slow, brown fox jumps over the lazy cats.'

3 个答案:

答案 0 :(得分:2)

我认为你真正的问题是"如何用另一个字符串替换子字符串?"

签出replace方法:

let inputString = "Hi, my name is John.";
let switch1 = ["John", "Jack"];
let switched = inputString.replace(switch1[0], switch1[1]);
console.log(switched); // Hi, my name is Jack.

更新:如果要获取所有出现次数(g),请不区分大小写(i),并使用边界使其不是另一个单词中的单词({{1 }},您可以使用RegExp

\\b

答案 1 :(得分:0)

使用'Hi, my name is John.'.split(/[,. ]/);将完成这项工作。它将分割逗号,句点和空格。

编辑:对于那些想要保留逗号和句号的人来说,这是我非常低效的方法。



var str = 'Hi, my name is John.'
str = str.replace('.', 'period');
str = str.replace(',', 'comma');
str = str.split(/[,. ]/);
for (var i = 0; i < str.length; i++) {
  if (str[i].indexOf('period') > -1) {
    str[i] = str[i].replace('period', '');
    str.splice(i+1, 0, ".");
  } else if (str[i].indexOf('comma') > -1) {
    str[i] = str[i].replace('comma', '');
    str.splice(i+1, 0, ",");
  }
}

console.log(str);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以试试这个......

 var string = 'Hi, my name is John.';
//var arr = string.split(/,|\.| /);
var arr = string.split(/([,.\s])/);
console.log(arr);
相关问题