查找字符的索引 - JavaScript
Finding the index of a character - JavaScript
我了解如何使用 indexOf() 查找字符串中某个字符的第一次出现。例如。
Str.indexOf("a");
但是我如何从字符数组中找到任何字符的第一次出现?
我的代码是:
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for (var i = 0; i < vowels.length; i++) {
if (vowels[i] === str.charAt(0)) {
return str + "way";
} else {
return str.substr(0, str.indexOf(vowels[i]));
}
} return str;
}
我想在第一次出现元音时结束子串。有没有简单的方法可以做到这一点?
提前致谢!
您也可以在数组中使用 indexOf()
简单地获取字符的索引。
- String.prototype.indexOf()
-
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
var i = vowels.indexOf('i'); // 2
您可以将 String.search 与正则表达式一起使用:
var vowels = /[aeiou]/i;
console.log('test'.search(vowels));
console.log('cherry'.search(vowels));
console.log('apricot'.search(vowels));
您可以像这样将其集成到您的代码中:
function translatePigLatin(str) {
var vowels = /[aeiou]/i;
if (str.charAt(0).match(vowels)) {
return str + "way";
} else {
return str.substr(0, str.search(vowels));
}
}
console.log(translatePigLatin('cherry'));
console.log(translatePigLatin('apricot'));
console.log(translatePigLatin('test'));
我假设这不是函数的最终版本,还有一些逻辑需要实现。
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for(var i=0;i<vowels.length;i++){
if(str.charAt(0)==vowels[i]){
return str+"way";
}
}
return str.substring(getVowelPos(str,vowels),str.length)+str.substring(0,getVowelPos(str,vowels))+"ay";
}
function getVowelPos(str,vowels){
var retval=str.length;
for(var j=0;j<vowels.length;j++){
if(str.indexOf(vowels[j])!=-1&&str.indexOf(vowels[j])<retval){
retval=str.indexOf(vowels[j]);
}
}
return retval;
}
alert(translatePigLatin("plolo"));
我了解如何使用 indexOf() 查找字符串中某个字符的第一次出现。例如。
Str.indexOf("a");
但是我如何从字符数组中找到任何字符的第一次出现?
我的代码是:
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for (var i = 0; i < vowels.length; i++) {
if (vowels[i] === str.charAt(0)) {
return str + "way";
} else {
return str.substr(0, str.indexOf(vowels[i]));
}
} return str;
}
我想在第一次出现元音时结束子串。有没有简单的方法可以做到这一点?
提前致谢!
您也可以在数组中使用 indexOf()
简单地获取字符的索引。
- String.prototype.indexOf()
-
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']; var i = vowels.indexOf('i'); // 2
您可以将 String.search 与正则表达式一起使用:
var vowels = /[aeiou]/i;
console.log('test'.search(vowels));
console.log('cherry'.search(vowels));
console.log('apricot'.search(vowels));
您可以像这样将其集成到您的代码中:
function translatePigLatin(str) {
var vowels = /[aeiou]/i;
if (str.charAt(0).match(vowels)) {
return str + "way";
} else {
return str.substr(0, str.search(vowels));
}
}
console.log(translatePigLatin('cherry'));
console.log(translatePigLatin('apricot'));
console.log(translatePigLatin('test'));
我假设这不是函数的最终版本,还有一些逻辑需要实现。
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for(var i=0;i<vowels.length;i++){
if(str.charAt(0)==vowels[i]){
return str+"way";
}
}
return str.substring(getVowelPos(str,vowels),str.length)+str.substring(0,getVowelPos(str,vowels))+"ay";
}
function getVowelPos(str,vowels){
var retval=str.length;
for(var j=0;j<vowels.length;j++){
if(str.indexOf(vowels[j])!=-1&&str.indexOf(vowels[j])<retval){
retval=str.indexOf(vowels[j]);
}
}
return retval;
}
alert(translatePigLatin("plolo"));