javascript - 如何在“pig latin”函数中排除标点符号?
问题描述
如果这个问题已经在某个地方得到回答,我深表歉意 - 如果是这样,请指出我正确的方向。我已经阅读了一堆解决方案,但还没有破解它!
Sooo ...基本上,我需要:将每个单词的第一个字母移到它的末尾,然后在单词的末尾添加“ay”。保持标点符号不变。
到目前为止,这是我的代码:
function pigIt(str) {
var newStr = str.split(" ");
var changed = newStr.map(function(input) {
return input.substring(1) + input.charAt(0) + "ay";
});
changed = changed.join(" ");
return changed;
}
console.log(pigIt('Pig latin is cool'));
如您所见,该代码适用于任何不包含标点符号的输入。伟大的。现在我可能需要在某处添加一个正则表达式来排除标点符号,但我不知道该放在哪里!请帮忙!!
解决方案
/(\W+)/
您可以在捕获分隔符时按单词边界进行拆分。仅转换单词。然后回来加入。
function pigIt(str) {
var newStr = str.split(/(\W+)/); // ['Pig', ' ', 'latin', ',- ',..]
var changed = newStr.map(function(input) {
if (!/\w/.test(input)) return input // keep non word elements as is
return input.substring(1) + input.charAt(0) + "ay";
});
return changed.join("");
}
console.log(pigIt('Pig latin,- is cool!'));
推荐阅读
- kubernetes - 无法使用 aks 附加 acr
- html - 如何制作彩虹边框半圆CSS?
- react-native - 无法对未安装的组件执行 React 状态更新。使用效果挂钩
- python - 从不是从 0 开始的索引的问题子集向量
- html - 我将如何正确设置导航栏的样式以使其更靠近边缘
- node.js - 如何将我的个人 NodeJS 网站上传到我的 FTP 服务器?
- tfs - VSTS/TFS 等待启用的代理。使用自定义任务条件时禁用所有可能的代理
- r - 在data.frame中添加一个字符串向量作为新列?
- bash - 用 sed 替换包含 $ in 的单词
- java - Hazelcast Pub-Sub,订阅者未收到消息