我写过这个函数来从字符串中删除小写元音。此函数不适用于某些字符串。如果字符串有多个同一个元音,则只删除一个元音。 [编辑:抱歉,我放弃在下面的示例中将'y'作为元音包括在内。]感谢您的帮助。
var string = "heelloo world";
var vowel = ["a", "e", "i", "o", "u"];
String.prototype.character = function name() {
var i;
for ( i = 0; i < vowel.length; i++) {
var secondLoop = string.length;
for ( j = 0; j < secondLoop; j++) {
if (vowel[i] == string.charAt(j)) {
string = string.slice(0, j).concat(string.slice(j + 1, secondLoop));
}
}
}
}
string.character();
console.log(string);
//hello wrld
答案 0 :(得分:3)
当您从字符串中删除字符时,您正在跳过循环中的下一个字符,因为字符串现在缩短了一个字符,但指针(j
)仍然指向相同的位置。删除字符时需要递减计数器。
var string = "heelloo world";
var vowel = ["a", "e", "i", "o", "u"];
String.prototype.character = function name() {
var i;
for ( i = 0; i < vowel.length; i++) {
var secondLoop = string.length;
for ( j = 0; j < secondLoop; j++) {
if (vowel[i] == string.charAt(j)) {
string = string.slice(0, j).concat(string.slice(j + 1, secondLoop));
j--; // take the removed character into account
secondLoop--; // string is now one character shorter
}
}
}
}
string.character();
console.log(string);
也就是说,使用正则表达式来实现相同的东西要容易得多,除非你有令人信服的理由避免它。
var string = "heelloo world";
string = string.replace( /[aeiou]/g, '' );
console.log(string); // hll wrld
答案 1 :(得分:0)
在代码中,在第二个嵌套循环期间,当循环在下一次迭代时递增时,它已经传递了元音的第二个实例,即循环为2但第二个元音为1.尝试从中减去1循环控制变量secondLoop什么时候连续分裂字符串连接的if条件?
答案 2 :(得分:0)
我认为解决的最佳方法是使用正则表达式替换来执行此操作:
String.prototype.character = function() {
return this.replace(/[aeiou]+/g, ''); //replace a, e, i, o and u with nothing.
}
function submit() {
var input = document.getElementById('input').value;
document.getElementById('output').innerHTML = input.character();
}
&#13;
<input id="input" type="text" value="eeexaammpleeee">
<div id="output"></div>
<button onclick="submit()">Go!</button>
&#13;
答案 3 :(得分:0)
我只想使用一个好的旧正则表达式 var string =“heelloo world”; var vowel = [“a”,“e”,“i”,“o”,“u”];
String.prototype.character = function() {
return this.replace(/[aeiou]/gi, '');
}
console.log(string.character());
答案 4 :(得分:-1)
试试这个:
var string = "heelloo world";
var vowel = ["a", "e", "i", "o", "u"];
var new_string = "";
var safe = "";
for (x = 0; x < string.length; x++)
{
var removeChar = false;
for (y = 0; y < vowel.length; y++)
{
if (string[x] == vowel[y] && safe != vowel[y])
{
if (string[x+1] == vowel[y])
{
safe = vowel[y];
removeChar = true;
}
else
safe = "";
break;
}
}
if (!removeChar)
{
new_string += string[x];
var isVowel = false;
for (y = 0; y < vowel.length; y++)
{
if (string[x] == vowel[y])
{
isVowel = true;
break;
}
}
if (!isVowel)
safe = "";
}
}
alert(new_string);
这将产生“你好世界”。