首页 > 解决方案 > 如何在“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'));

如您所见,该代码适用于任何不包含标点符号的输入。伟大的。现在我可能需要在某处添加一个正则表达式来排除标点符号,但我不知道该放在哪里!请帮忙!!

标签: javascriptregex

解决方案


/(\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!'));


推荐阅读