Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
String Swift:插入内容_String_Swift_Replace - Fatal编程技术网

String Swift:插入内容

String Swift:插入内容,string,swift,replace,String,Swift,Replace,我试图使用inertContentsOf循环查找所有“\”字符,并在前面插入另一个“\”字符。问题是如果需要插入字符,我并不总是知道索引 例如,我知道我想在索引3处插入“\”: myString.insertContentsOf(“\\”。字符,地址:myString.startIndex.advancedBy(3)) 在不知道索引的情况下,我怎么做? 我尝试了以下循环,但没有任何运气 for words in inputArray { for char in words {

我试图使用inertContentsOf循环查找所有“\”字符,并在前面插入另一个“\”字符。问题是如果需要插入字符,我并不总是知道索引

例如,我知道我想在索引3处插入“\”:

myString.insertContentsOf(“\\”。字符,地址:myString.startIndex.advancedBy(3))

在不知道索引的情况下,我怎么做? 我尝试了以下循环,但没有任何运气

for words in inputArray {
    for char in words {
        if char == "\\" {
            words.insertContentsOf("\\".characters, at: char)
        }
    }
}
at:char
因为我试图将字符转换为索引而对我大喊大叫,我得到了索引,但不知道如何修复它

编辑:由于某种原因,当我尝试将其放入函数
inputArray时,map
没有被调用

func GenerateString(inputArray:[String])->String {

inputArray.map {
    $0.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")
}

let joiner = "|"
let joinerString = inputArray.joinWithSeparator(joiner)

return ("Result: \(joinerString)")
}

let example = ["hello", "world", "c:\Program File\Example"]
GenerateString(example)
结果:

“你好|世界| c:\Program File\Example”


请尝试使用字符串的替换发生次数来替换字符串:

var words: String = "c\\Program Files\\Example"
words = words.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")
print("Result: \(words)")
// "Result: c\\Program Files\\Example"
或者,如果要在阵列中执行此操作:

let inputArray: [String] = ["hello", "world", "c\\Program Files\\Example"]
inputArray.map {
    $0.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")
}
print("Result: \(inputArray)")
// "Result: ["hello", "world", "c\\Program Files\\Example"]"
stringByReplacingOccurrencesOfString(“\\”,with string:“\\\\”
行表示将
\\\
替换为
\\\\
,这正是您想要做的事情。:)


相关问题:

使用
stringByReplacingOccurrencesOfString

words.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")

您可以在数组上进行映射,并使用
stringByReplacingOccurrencesOfString

let new Array = inputArray.map { 
    $0.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")
}

您可以对SequenceType的任何序列调用
enumerate()
,以获取索引和当前项,这样您就可以执行以下操作:
用于words.enumerate()中的(索引、字符)

尽管您也应该避免在循环数组时修改它。可以考虑使用另一个数组,在该数组中添加普通字符,在
\
的情况下,添加
\\

您的输入字符串是什么?您需要什么输出?输入:“hello”、“world”、“c\Program Files\Example”。输出:“hello world c\\Program Files\\Example”。我看到你用
map
编辑你的问题,小心
map
返回一个新数组,不要更改当前数组。如果你不保留返回数组,编译器可能会删除这个无用的代码。小心转义字符,这可能会很棘手:你的答案是正确的,但是你显示的打印结果是错误的。您的代码给出了转义反斜杠,这是可以的,但您显示的是双转义(就像它出现在游乐场窗格中)而不是简单转义(就像它出现在
print
中)。此外,我们还必须对转义字符进行转义,以便它出现在文本或注释中。(确实很棘手。)@埃里克。这真的很棘手:|(我从游乐场复制结果)更新了结果注释以从real
print()
no映射的代码是错误的,你编辑你的答案并复制我的回答(或从我的回答复制的有问题的代码),而不知道如何使用映射…,映射返回一个新数组(此处使用相同的类型,因此我们可以执行
inputArray=inputArray.map{..}
@phimage,但当我在实际项目中尝试时,此代码确实返回正确的结果:(很棒的,这很管用。我花了一段时间才让它运行在终端。你需要导入基础,然后才能使用StrugByRePixGoCurrScEngOfStope.@ WraseOne AGH,是的,对不起。