我有一个Pig Latin翻译器,我已经设置了单字符串或多字符串,但它不能用标点符号。
实际上,translatePigLatin("Pig Latin");
会返回'Igpay Atinlay'
,但translatePigLatin("Pig Latin.");
会返回'Igpay Atin.lay'
,并且句点会在一个单词的中间恼人地返回。如何让它返回'Igpay Atinlay.'
?
功能是:
function translatePigLatin(string) {
var arr = string.split(' ');
var str;
for (var i = 0; i < arr.length; i++) {
var j = 0;
if (!/[\d]/.test(arr[i])) {
while (/[^aeiou]/i.test(arr[i][j])) {
j++;
}
if (j > 0) {
arr[i] = arr[i].slice(j) + arr[i].slice(0, j) + 'ay';
} else {
arr[i] = arr[i] + 'way';
}
}
if (/[A-Z]/.test(arr[i])) {
arr[i] = toTitleCase(arr[i]);
}
}
return arr.join(' ');
}
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
答案 0 :(得分:0)
您可以使用此功能:
function punct(str)
{
var punctuation = ".,!@#$";
var matches = 0;
for(var i=0;i<str.length-matches;i++)
{
if(punctuation.indexOf(str[i])!=-1)
{
str = str.substr(0,i) + str.substr(i+1)+str[i--];
matches++;
}
}
return str;
}
使用for循环遍历你的字符串,如果它在标点字符串中找到一个字符,它会在字符串的末尾移动该字符。所以punct(&#34; Igpay Atin.lay&#34;)产生&#34; Igpay Atinlay。&#34;。给它一个机会。