javascript - 如何使用拆分从字符串内的单词中拆分逗号和句点?
问题描述
我正在尝试用其他内容更改字符串中的特定单词。例如,我想将“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.'
解决方案
我认为您真正的问题是“如何用另一个字符串替换子字符串?”
检查替换方法:
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.
推荐阅读
- java - 如何使用 dataSnapshot.hasChildren() 检查 recyclerview 是否为空
- python - 当我使用 python 创建文件时我的文件在哪里
- javascript - JavaScript:如何实现二叉搜索树
- python-3.x - 在 Microsoft Azure 表存储插入或替换上附加实体
- html - 角材料表开关盒问题
- python - python 3.9 中是否有对应于 |= (管道相等/更新) 的 __dunder__ 方法?
- c - C POSIX 处理管道/套接字通信练习第二个进程卡住
- javascript - 标题不粘在屏幕顶部
- c++ - 为什么我不能引用指向实例化对象函数的指针?
- python - 尝试在 python 中打开文件以读取(带有特殊字符)时出错