因此,对于我的cit类,我必须编写一个猪拉丁语转换程序,我真的很困惑如何将数组和字符串一起使用。 转换的规则很简单,你只需将单词的第一个字母移到后面,然后添加一个。例如:英语中的地狱将是猪拉丁语中的ellhay 到目前为止我有这个:
<form name="form">
<p>English word/sentence:</p> <input type="text" id="english" required="required" size="80" /> <br />
<input type="button" value="Translate!" onClick="translation()" />
<p>Pig Latin translation:</p> <textarea name="piglat" rows="10" cols="60"></textarea>
</form>
<script type="text/javascript">
<!--
fucntion translation() {
var delimiter = " ";
input = document.form.english.value;
tokens = input.split(delimiter);
output = [];
len = tokens.length;
i;
for (i = 1; i<len; i++){
output.push(input[i]);
}
output.push(tokens[0]);
output = output.join(delimiter);
}
//-->
</script>
我真的很感激我能得到任何帮助!
答案 0 :(得分:4)
function translate(str) {
str=str.toLowerCase();
var n =str.search(/[aeiuo]/);
switch (n){
case 0: str = str+"way"; break;
case -1: str = str+"ay"; break;
default :
//str= str.substr(n)+str.substr(0,n)+"ay";
str=str.replace(/([^aeiou]*)([aeiou])(\w+)/, "$2$3$1ay");
break;
}
return str;
}
translate("paragraphs")
答案 1 :(得分:3)
我认为你真正需要关注的两件事是substring()
方法和字符串连接(一起添加两个字符串)。由于对split()
的调用返回的数组中的所有对象都是字符串,因此简单的字符串连接工作正常。例如,使用这两种方法,您可以将字符串的第一个字母移动到末尾,如下所示:
var myString = "apple";
var newString = mystring.substring(1) + mystring.substring(0,1);
答案 2 :(得分:1)
如果您正在努力使用数组,这可能有点复杂,但它简洁紧凑:
var toPigLatin = function(str) {
return str.replace(/(^\w)(.+)/, '$2$1ay');
};
演示:http://jsfiddle.net/elclanrs/2ERmg/
稍微改进的版本用于整个句子:
var toPigLatin = function(str){
return str.replace(/\b(\w)(\w+)\b/g, '$2$1ay');
};
答案 3 :(得分:1)
这是我的解决方案
public class CustomLineMapper extends DefaultLineMapper<Claim> {
@Override
public Claim mapLine(String line, int lineNumber) throws Exception {
// here you can handle *line content*
return super.mapLine(line, lineNumber);
}
}
答案 4 :(得分:1)
此代码是基本的,但它有效。首先,要注意以元音开头的单词。否则,对于以一个或多个辅音开头的单词,确定辅音的数量并将它们移到最后。
function translate(str) {
str=str.toLowerCase();
// for words that start with a vowel:
if (["a", "e", "i", "o", "u"].indexOf(str[0]) > -1) {
return str=str+"way";
}
// for words that start with one or more consonants
else {
//check for multiple consonants
for (var i = 0; i<str.length; i++){
if (["a", "e", "i", "o", "u"].indexOf(str[i]) > -1){
var firstcons = str.slice(0, i);
var middle = str.slice(i, str.length);
str = middle+firstcons+"ay";
break;}
}
return str;}
}
translate("school");
答案 5 :(得分:0)
另一种方法,使用单独的函数作为真或假开关。
function translatePigLatin(str) {
// returns true only if the first letter in str is a vowel
function isVowelFirstLetter() {
var vowels = ['a', 'e', 'i', 'o', 'u', 'y'];
for (i = 0; i < vowels.length; i++) {
if (vowels[i] === str[0]) {
return true;
}
}
return false;
}
// if str begins with vowel case
if (isVowelFirstLetter()) {
str += 'way';
}
else {
// consonants to move to the end of string
var consonants = '';
while (isVowelFirstLetter() === false) {
consonants += str.slice(0,1);
// remove consonant from str beginning
str = str.slice(1);
}
str += consonants + 'ay';
}
return str;
}
translatePigLatin("jstest");
答案 6 :(得分:0)
这是我的解决方案代码:
function translatePigLatin(str) {
var vowel;
var consonant;
var n =str.charAt(0);
vowel=n.match(/[aeiou]/g);
if(vowel===null)
{
consonant= str.slice(1)+str.charAt(0)+”ay”;
}
else
{
consonant= str.slice(0)+”way”;
}
var regex = /[aeiou]/gi;
var vowelIndice = str.indexOf(str.match(regex)[0]);
if (vowelIndice>=2)
{
consonant = str.substr(vowelIndice) + str.substr(0, vowelIndice) + ‘ay’;
}
return consonant;
}
translatePigLatin(“gloove”);
答案 7 :(得分:0)
另一种方式。
String.prototype.toPigLatin = function()
{
var str = "";
this.toString().split(' ').forEach(function(word)
{
str += (toPigLatin(word) + ' ').toString();
});
return str.slice(0, -1);
};
function toPigLatin(word)
{
//Does the word already start with a vowel?
if(word.charAt(0).match(/a*e*i*o*u*A*E*I*O*U*/g)[0])
{
return word;
}
//Match Anything before the firt vowel.
var front = word.match(/^(?:[^a?e?i?o?u?A?E?I?O?U?])+/g);
return (word.replace(front, "") + front + (word.match(/[a-z]+/g) ? 'a' : '')).toString();
}
答案 8 :(得分:0)
猪拉丁的另一种方式:
t id dt ... becnt rcnt cv
0 1 .HK.201202_115703 2020/12/02 11:57 ... 3 5 1
1 1 .HK.201202_115445 2020/12/02 11:54 ... 81 96 1
2 1 NOW.1060528 2020/12/02 11:47 ... 129 116 1
3 1 NOW.1060522 2020/12/02 11:47 ... 4 5 1
4 1 NOW.1060523 2020/12/02 11:47 ... 8 15 1
5 1 NOW.1060520 2020/12/02 11:43 ... 159 53 1
6 1 NOW.1060518 2020/12/02 11:37 ... 2 0 1
7 1 NOW.1060517 2020/12/02 11:35 ... 33 49 1
8 1 RUM.201202_113518 2020/12/02 11:35 ... 65 52 1
9 1 NOW.1060514 2020/12/02 11:34 ... 0 0 1
10 1 RUM.201202_112609 2020/12/02 11:26 ... 16 17 1
11 1 NOW.1060510 2020/12/02 11:21 ... 11 26 1
12 1 NOW.1060508 2020/12/02 11:14 ... 42 58 1
13 1 NOW.1060506 2020/12/02 11:12 ... 4 2 1
14 1 NOW.1060502 2020/12/02 11:12 ... 0 0 1
15 1 NOW.1060507 2020/12/02 10:59 ... 9 3 1
16 1 NOW.1060497 2020/12/02 10:56 ... 2 0 1
17 1 NOW.1060496 2020/12/02 10:51 ... 2 1 1
18 1 NOW.1060495 2020/12/02 10:47 ... 0 0 1
19 1 NOW.1060492 2020/12/02 10:43 ... 0 0 1
[20 rows x 12 columns]
答案 9 :(得分:-1)
您的朋友是字符串函数.split
,数组函数.join
和.slice
以及.concat
。
警告: 以下是一个完整的解决方案,您可以在完成或花费太多时间后参考。
function letters(word) {
return word.split('')
}
function pigLatinizeWord(word) {
var chars = letters(word);
return chars.slice(1).join('') + chars[0] + 'ay';
}
function pigLatinizeSentence(sentence) {
return sentence.replace(/\w+/g, pigLatinizeWord)
}
演示:
> pigLatinizeSentence('This, is a test!')
"hisTay, siay aay esttay!"