【问题标题】:How to process words one by one?如何一个一个地处理单词?
【发布时间】:2015-06-27 17:52:09
【问题描述】:

如何从段落中挑选单词并逐个处理。我想切换字母的位置,除了第一个和最后一个字母。我怎样才能? 谢谢

var fullInputArray = []
func convertToArray(){
    let fullInput = inputBox.text
    fullInputArray = fullInput.componentsSeparatedByString(" ")
    println("\(fullInputArray)") //prints [hello, world, this, is, an, app]
}


func processWords(){
    var processedArray: [String] = //something functional code like fullInputArray.mix
    println("\(processedArray)") //prints [hlleo, wlord, tihs, is, an, app]
}

【问题讨论】:

  • 你的问题没有一个好的标题。正在寻找一种在 NSString 对象中交换字符的方法?正在寻找一种按空格分割 NSString 对象的方法?
  • 其实是的。我想处理以空格分隔的单词。 ??? @ChristophH。
  • 你将不得不添加一些你到目前为止所做的代码。
  • 我已根据@ZaidPathan 的回答将字符串转换为数组。你可以在上面看到。
  • @Encul 好的,看看我的回答

标签: ios swift


【解决方案1】:
import UIKit

extension Array {
    var shuffled: [T] {
        var result = self
        for index in 0..<result.count-1 {
            swap(&result[index], &result[Int(arc4random_uniform(UInt32(result.count-index)))+index])
        }
        return result
    }
}

extension String {
    var wordList:[String] {
        return "".join(componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet())).componentsSeparatedByString(" ")
    }
    var first: String {
        return String(self[startIndex])
    }
    var last: String {
        return String(self[endIndex.predecessor()])
    }
    var scrambleMiddle: String {
        if count(self) < 4 {
            return self
        }
        return first + String(Array(dropLast(dropFirst(self))).shuffled) + last
    }
}


let myWordListScrambled = "Hello Playground".wordList.map{$0.scrambleMiddle}

println(myWordListScrambled)   // "[Hlelo, Plnrgayoud]"

注意:此answer 的随机扩展变体

【讨论】:

  • 我应该在 ViewController 类之外添加这段代码吗?否则我会收到一个错误(Declaration 仅在文件范围内有效)。因此,我将它添加到 ViewController 类之外。但在这种情况下,我不能调用 UITextField 而不是“Hello Playground”(myWordListScrambled)。我该如何解决?
  • 是的,所有扩展都必须放在视图控制器之外。
  • 好的,谢谢。但是如何使用 inputBox 而不是“Hello Playground”(myWordListScrambled)?我尝试了 ViewController().inputBox,但出现错误(UITextView 没有名为 'wordList' 的成员)
  • 嗨,我如何在 swift 2.0 中使用该代码? @LeoDabus
【解决方案2】:

您可以将段落(字符串)拆分为 Array ,然后访问该 Array 索引。

试试这个答案把你的字符串转换成数组:https://stackoverflow.com/a/26270721/3411787

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多