我正在尝试使用其他内容更改字符串中的特定单词。例如,我想将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.'
答案 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;
答案 2 :(得分:0)
你可以试试这个......
var string = 'Hi, my name is John.';
//var arr = string.split(/,|\.| /);
var arr = string.split(/([,.\s])/);
console.log(arr);