问题是:
使用JavaScript,让函数LetterChanges(str)
获取传递的str
参数,并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表后面的字母(即c变为d,z变为a)。然后大写这个新字符串(a,e,i,o,u)中的每个元音,最后返回这个修改后的字符串。
function LetterChanges(str){
var result = "";
for(var i = 0; i < str.length; i++) {
var letters = str[i];
if (letters == "a"|| letters == "e"|| letters == "i"|| letters == "o"|| letters =="u") {
letters = letters.toUpperCase();
result+=letters;
} else if (letters == "z") {
letters = "a";
} else {
var answer = "";
var realanswer="";
for (var i =0;i<str.length;i++) {
answer += (String.fromCharCode(str.charCodeAt(i)+1));
}
realanswer += answer
}
}
return realanswer;
return result;
}
LetterChanges();
基本上,如果在返回结果之前放置realanswer并且使用“o”调用LetterChanges,则输出未定义。但如果用非元音如“b”调用它,它将输出“c”,这是正确的。
现在,如果我在返回realanswer之前放置返回结果,它将适用于元音但不适用于其他字母。谢谢你的帮助
答案 0 :(得分:1)
DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_HEART_RATE_BPM)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.bucketByTime(365, TimeUnit.DAYS)
.build();
Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
.readData(readRequest)
.addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
Log.d(TAG, "onSuccess()");
for (Bucket bucket : dataReadResponse.getBuckets()) {
Log.e("History", "Data returned for Data type: " + bucket.getDataSets());
List<DataSet> dataSets = bucket.getDataSets();
for (DataSet dataSet : dataSets) {
showDataSet(dataSet);
}
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "onFailure()", e);
}
})
.addOnCompleteListener(new OnCompleteListener<DataReadResponse>() {
@Override
public void onComplete(@NonNull Task<DataReadResponse> task) {
Log.d(TAG, "onComplete()");
}
});
第一部分以1为增量修改辅音。
正则表达式使用 function LetterChanges(str) {
return str
.replace(/[a-zA-Z]/g, (x) => String.fromCharCode(x.charCodeAt(0)+1))
.replace(/[aeiou]/g, (v) => v.toUpperCase());
}
分隔字符,而根本没有括号。 []
确保将正则表达式应用在字符串中的任何位置,而不是不放置g
来使搜索第一次出现。
您必须将字符串中的字符转换为Unicode,因为递增是一项数学运算。 g
在参数中字符串的索引0处说。 1的增量不在括号内,而是在括号外。
第二部分将元音修改为大写。
x.charCodeAt(0)
,而在字符串中的任何地方都使用了[]
。修饰符是使字符变为大写。答案 1 :(得分:0)
function LetterChanges(str) {
var lstr = "";// Took a variable to store after changing alphabet//
for(var i=0;i<str.length;i++){
var asVal = (str.charCodeAt(i)+1);// To convert string to Ascii value and 1 to it//
lstr += (String.fromCharCode(asVal));// To convert back to string from Asii value//
}
console.log("Before converting vowels :"+lstr); //Printing in console changed alphabet//
var neword =""; // variable to store word after changing vowels to uppercase//
for(i=0;i<lstr.length;i++){
var strng = lstr[i]; // Storing every letter in strng variable while running loop //
if(strng=="a"||strng=="e"||strng=="i"||strng=="o"||strng=="u"){
neword += strng.toUpperCase(); // If it a vowel it gets uppercased and added //
}
else{
neword += strng; // If not vowel , it just gets added without Uppercase //
}
}
console.log("After converting vowels :"+neword); //Printing in console the word after captilising the vowels //
}
LetterChanges("Goutham"); // Calling a function with string Goutham //
答案 2 :(得分:0)
function letterChanges(str) {
let res = '';
let arr = str.toLowerCase().split('');
// Iterate through loop
for(let i = 0; i < str.length; i++) {
// Convert String into ASCII value and add 1
let temp = str.charCodeAt(i) + 1;
// Convert ASCII value back into String to the result
res += (String.fromCharCode(temp));
}
console.log(res);
// Replace only vowel characters to Uppercase using callback in the replace function
return res.replace(/[aeiou]/g, (letters) {
return letters.toUpperCase();
});
}
答案 3 :(得分:0)
function LetterChanges(str) {
return str
.split('')
.map((c) => String.fromCharCode((c >= 'a' && c <= 'z') ? (c.charCodeAt(0)-97+1)%26+97 : (c >= 'A' && c <= 'Z') ? (c.charCodeAt(0)+1-65)%26+65 : c.charCodeAt(0)))
.join('').replace(/[aeiou]/g, (letters) => letters.toUpperCase());
}