Ich habe einen Pig Latin-Übersetzer, den ich eingerichtet habe, um Strings mit einem oder mehreren Wörtern aufzunehmen, aber keine Interpunktion.Verschieben von Satzzeichen vom Anfang oder von der Mitte einer Zeichenfolge bis zum Ende
Wie es ist, translatePigLatin("Pig Latin");
kehrt 'Igpay Atinlay'
, wie es sollte, aber translatePigLatin("Pig Latin.");
kehrt 'Igpay Atin.lay'
, mit der Zeit nervig in der Mitte eines Wortes. Wie kann ich es stattdessen 'Igpay Atinlay.'
zurückgeben?
Die Funktion ist:
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();
});
}
collect + Alle Nicht-Alpha-Zeichen aus der Eingabezeichenfolge entfernen und am Ende der Routine die Nicht-Alphazeichen an das Ende der Zeichenfolge anhängen. – marcusshep
@marcusshep Ich denke, das ist es, was ich tun muss, aber ich habe Probleme, es richtig zu machen. – alton1231
Sie haben das, ich glaube an dich. – marcusshep