Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何排除“中的标点符号?”;猪拉丁语“;功能?_Javascript_Regex - Fatal编程技术网

Javascript 如何排除“中的标点符号?”;猪拉丁语“;功能?

Javascript 如何排除“中的标点符号?”;猪拉丁语“;功能?,javascript,regex,Javascript,Regex,如果这个问题在什么地方得到了回答,我深表歉意——如果是的话,请给我指出正确的方向。我已经阅读了很多解决方案,但还没有破解 所以…基本上,我需要: 将每个单词的第一个字母移到它的末尾,然后在单词的末尾加上“ay”。保持标点符号不变 这是我目前的代码: 函数pigIt(str){ var newStr=str.split(“”); var changed=newStr.map(函数(输入){ 返回input.substring(1)+input.charAt(0)+“ay”; }); change

如果这个问题在什么地方得到了回答,我深表歉意——如果是的话,请给我指出正确的方向。我已经阅读了很多解决方案,但还没有破解

所以…基本上,我需要: 将每个单词的第一个字母移到它的末尾,然后在单词的末尾加上“ay”。保持标点符号不变

这是我目前的代码:

函数pigIt(str){
var newStr=str.split(“”);
var changed=newStr.map(函数(输入){
返回input.substring(1)+input.charAt(0)+“ay”;
});
changed=changed.join(“”);
回报发生变化;
}

log(pigIt(‘Pig拉丁语很酷’)
您可以在捕获分隔符时按单词边界进行拆分。只转换单词。然后再回来

函数pigIt(str){
var newStr=str.split(/(\W+/);//[“猪”,“拉丁”,“拉丁”,“-”,…]
var changed=newStr.map(函数(输入){
if(!/\w/.test(input))返回input//保持非单词元素不变
返回input.substring(1)+input.charAt(0)+“ay”;
});
返回已更改。加入(“”);
}

log(pigIt('piglatin,-is cool!'))我认为,因为您希望在处理后将标点符号放回原来的位置,所以手动操作可能会更好

每次循环输入1个字符,并构建一个“字缓冲区”,每次点击非字母字符,然后处理字缓冲区并附加非字母字符

函数pigIt(str){
变量过程=函数{
如果(s.长度<2){
返回s;
}
返回s.substring(1)+s.charAt(0)+“ay”;
};
var结果=“”;
var缓冲区=“”;
对于(变量i=0;i控制台日志(输出)有趣的是,我不知道您可以使用捕获组保留分隔符。。。虽然我现在知道了,谢谢;)@我自己最近发现:)有时向下滚动MDN文章可能会有帮助:)是的-正是我所需要的。非常感谢。