Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Swift中功能性词语的颠倒_Swift_String - Fatal编程技术网

Swift中功能性词语的颠倒

Swift中功能性词语的颠倒,swift,string,Swift,String,我可以在不使用循环的情况下从功能上反转字符串中的每个单词,但是当我尝试反转其他每个单词时。我遇到了问题。我可以用一个循环来完成它,但在功能上不行。我在这里看不到什么 功能上(每个词): 带循环(每隔一个单词): 使用stride() 然后使用forEach()选择步幅数组中的每个索引,并使用它在该索引处对单词进行变异以反转 import UIKit let string = "Now is the time for all good programmers to babble incohere

我可以在不使用循环的情况下从功能上反转字符串中的每个单词,但是当我尝试反转其他每个单词时。我遇到了问题。我可以用一个循环来完成它,但在功能上不行。我在这里看不到什么

功能上(每个词):

带循环(每隔一个单词):

使用
stride()

然后使用
forEach()
选择步幅数组中的每个索引,并使用它在该索引处对单词进行变异以反转

import UIKit

let string = "Now is the time for all good programmers to babble incoherently"

var words = string.components(separatedBy: " ")

stride(from: 0, to: words.count, by: 2)
.forEach { words[$0] = String(words[$0].reversed()) }


let newString = words.joined(separator: " ")

print(newString)
输出字符串为:

"woN is eht time rof all doog programmers ot babble yltnerehocni"
使用
stride()

然后使用
forEach()
选择步幅数组中的每个索引,并使用它在该索引处对单词进行变异以反转

import UIKit

let string = "Now is the time for all good programmers to babble incoherently"

var words = string.components(separatedBy: " ")

stride(from: 0, to: words.count, by: 2)
.forEach { words[$0] = String(words[$0].reversed()) }


let newString = words.joined(separator: " ")

print(newString)
输出字符串为:

"woN is eht time rof all doog programmers ot babble yltnerehocni"

只要稍微修改一下
reverseWords
,你就可以每隔一个单词反转一次。使用
enumerated()
将单词与其位置组合起来,然后使用它反转奇数单词:

let input = "one two three four five"

func reverseOddWords(input: String) -> String {
    let parts = input.components(separatedBy: " ")
    let reversed = parts.enumerated().map { $0 % 2 == 0 ? String($1.reversed()) : $1 }
    return reversed.joined(separator: " ")
}

print(reverseOddWords(input: input))

或者,您可以在Swift的
排序
之后对函数进行模式化,并将
过滤器
关闭传递给
反向排序
函数:

let input = "one two three four five"

func reverseWords(_ input: String, using filter: ((Int) -> Bool) = { _ in true }) -> String {
    let parts = input.components(separatedBy: " ")
    let reversed = parts.enumerated().map { filter($0) ? String($1.reversed()) : $1 }
    return reversed.joined(separator: " ")
}

// default behavior is to reverse all words
print(reverseWords("one two three four five"))

只要稍微修改一下
reverseWords
,你就可以每隔一个单词反转一次。使用
enumerated()
将单词与其位置组合起来,然后使用它反转奇数单词:

let input = "one two three four five"

func reverseOddWords(input: String) -> String {
    let parts = input.components(separatedBy: " ")
    let reversed = parts.enumerated().map { $0 % 2 == 0 ? String($1.reversed()) : $1 }
    return reversed.joined(separator: " ")
}

print(reverseOddWords(input: input))

或者,您可以在Swift的
排序
之后对函数进行模式化,并将
过滤器
关闭传递给
反向排序
函数:

let input = "one two three four five"

func reverseWords(_ input: String, using filter: ((Int) -> Bool) = { _ in true }) -> String {
    let parts = input.components(separatedBy: " ")
    let reversed = parts.enumerated().map { filter($0) ? String($1.reversed()) : $1 }
    return reversed.joined(separator: " ")
}

// default behavior is to reverse all words
print(reverseWords("one two three four five"))

我建议您添加一个具有预期输出的示例输入。至少就我个人而言,你的问题有点不清楚,但举一个你想要实现的例子会对我有很大帮助。添加当前输出也会有帮助。“这是一个示例句子”看起来像这样:“这是一个elpmas句子”,每个单词都颠倒。两件事。首先,输出是什么(不是您所期望的,而是您的代码产生了什么)?第二,您是否设置了断点并实际查看了正在构建的输出?他发布了实现其目标的命令式代码,并要求提供等效函数版本的帮助。看看我的答案,安迪·伊巴内兹和dfd。。。上面的代码输出正确。我只是想找到一种方法,使用函数式编程将其他单词颠倒过来。我建议您添加一个具有预期输出的示例输入。至少就我个人而言,你的问题有点不清楚,但举一个你想要实现的例子会对我有很大帮助。添加当前输出也会有帮助。“这是一个示例句子”看起来像这样:“这是一个elpmas句子”,每个单词都颠倒。两件事。首先,输出是什么(不是您所期望的,而是您的代码产生了什么)?第二,您是否设置了断点并实际查看了正在构建的输出?他发布了实现其目标的命令式代码,并要求提供等效函数版本的帮助。看看我的答案,安迪·伊巴内兹和dfd。。。上面的代码输出正确。我只是想找到一种方法,用函数式编程把其他单词颠倒过来。你真的那么懒吗?看看你能不能自己把它转换成函数。你真的那么懒吗?看看你能不能自己把它转换成函数。哦,天哪!您创建了一个高阶函数来反转某些单词?你肯定会因此得到额外的积分。(投票)现在你可以输入斐波那契序列作为过滤器,如果你想的话!天哪!您创建了一个高阶函数来反转某些单词?你肯定会因此得到额外的积分。(投票)现在你可以输入斐波那契序列作为过滤器,如果你想的话!
print(reverseWords("one two three four five", using: { $0 % 2 == 1 }))
one owt three ruof five
print(reverseWords("one two three four five", using: { [0, 3, 4].contains($0) }))
eno two three ruof evif
let everyThirdWord = { $0 % 3 == 0 }

print(reverseWords("one two three four five", using: everyThirdWord))
eno two three ruof five