Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何替换字符串中的所有元音?_Ios_Swift_String_Flatmap - Fatal编程技术网

Ios 如何替换字符串中的所有元音?

Ios 如何替换字符串中的所有元音?,ios,swift,string,flatmap,Ios,Swift,String,Flatmap,我尝试使用以下代码: let vowels: [Character] = ["a","e","i","o","u", "y"] let replaced = String(myString.map { $0 == vowels.contains($0) ? "1" : "0" }) 但我有一个错误: 二进制运算符“==”不能应用于“Character”和“Bool”类型的操作数。 怎么了 只需将$0==替换为return,您正在将字符与布尔值进行比较,这毫无意义 let vowe

我尝试使用以下代码:

let vowels: [Character] = ["a","e","i","o","u", "y"]

let replaced = String(myString.map {
     $0 == vowels.contains($0) ? "1" : "0"
 })
但我有一个错误:
二进制运算符“==”不能应用于“Character”和“Bool”类型的操作数。


怎么了

只需将
$0==
替换为
return
,您正在将字符与布尔值进行比较,这毫无意义

let vowels: [Character] = ["a","e","i","o","u", "y"]

let replaced = String(myString.map {
     return vowels.contains($0) ? "1" : "0"
 })

您可以从字符串中删除元音,如下所示:

string.remove(at: string.index(where: {vowels.contains($0)})!)

用星号符号替换字符串中的所有元音

let vowels: [Character] = ["a","e","i","o","u", "y"]
    var myString = "mahipal singh"
    let replaced = String(myString.map {
        vowels.contains($0) ? Character("*") : $0 // Replace * with your character you wanna to replace
    })
    print(replaced)

不同的方式,但它仍然是你想要的

 let strs = "hello world"
    var str = String()
    let vowles = ["e","o"]
    //if you want the index also use  this (index,char) in strs.enumerated()
    //if the index is not important use this char in strs

    for (index,char) in strs.enumerated()
{


   var who = String(char)
    if vowles.contains(who){
        print(who)
        //replace or deleted by changing the value of who
         who = ""
        str = str + who
        print(str)

    }else{
        str = str + who

    }
}

问题有点不清楚-您在算法或编译错误方面有问题吗?让我们翻译一下:
$0
是一个
字符
对象<代码>元音。包含($0)返回一个
Bool
someCharacter==someBool
对你来说有什么意义?现在,让我们回到主题,只做
元音。包含($0)?“1”:“0”
,因为您只关心
元音。contains($0)
。您也可以省略return,我认为两者都有更好,但忘了添加,他只选择了一个问题,为什么我要使用
元音。contains($0)$0:字符(“*”
若要替换所有字符例外*,我的所有字符都将替换为*?是否阅读了代码注释..您可以设置要替换的任何字符。我已经设置了“*”作为示例是的,如果设置元音,这将替换除*以外的所有字符。包含($0)$0:字符(“*”)不会,它将所有字符替换为*,我不明白为什么。根据您的条件,元音。包含($0)$0:字符(“”),它检查元音是否包含字符串的字符,它将打印该元音字符,如果元音不包含该字符,那么它将在该位置替换为*,因此生成的字符串类似于*aia*i,它将所有辅音替换为*并打印所有的STRING元音。这将只删除第一次出现的元音
 let strs = "hello world"
    var str = String()
    let vowles = ["e","o"]
    //if you want the index also use  this (index,char) in strs.enumerated()
    //if the index is not important use this char in strs

    for (index,char) in strs.enumerated()
{


   var who = String(char)
    if vowles.contains(who){
        print(who)
        //replace or deleted by changing the value of who
         who = ""
        str = str + who
        print(str)

    }else{
        str = str + who

    }
}