首页 > 解决方案 > 如何使用拆分从字符串内的单词中拆分逗号和句点?

问题描述

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

我知道如何按单词或字符拆分字符串。我还知道如何删除字符串中的逗号、句点和其他符号。但是,如果我用分隔符 (" ") 分割给定的字符串,我将得到 'John.'。这是我不想要的。(我知道我可以将 'John.' 与 'Jack.' 切换。但假设我在一个对象中有一个键值对,并且我使用的值是名称 {Father: Jack, Mother: Susan, ...}

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

例如,如果给我一个字符串输入:
'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.'

标签: javascriptarrayssplit

解决方案


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

检查替换方法:

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),并使用边界,以便它不是另一个单词中的单词(\\b),您可以使用RegExp

let inputString = "I'm John, or johnny, but I prefer john.";
let switch1 = ["John", "Jack"];
let re = new RegExp(`\\b${switch1[0]}\\b`, 'gi');
console.log(inputString.replace(re, switch1[1])); // I'm Jack, or johnny, but I prefer Jack.

推荐阅读