我正在制作一个应用程序,它将在uilabel.text中“填空” 从文本文件。我有点坚持如何用 selectedWords 字符串类型的单词数组填充我的文本文件。到目前为止,我能够显示文本并替换我的文本文件中的“空白”,只有一个单词,但我无法弄清楚如何使用我的selectedWords数组替换文本文件中的§§§单词从中。有谁能帮助我吗?
class GameVC: UIViewController {
@IBOutlet weak var storyLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
if let Path = Bundle.main.url(forResource: "fortelling1", withExtension: "rtf") {
do {
let attributedStringWithRtf: NSAttributedString = try NSAttributedString(url: Path, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil)
self.storyLabel.attributedText = attributedStringWithRtf
self.storyLabel.font = UIFont(name: "TimesNewRomanPS-BoldItalicMT",
size: 30.0)
storyLabel.text = storyLabel.text?.replacingOccurrences(of: "§§§", with: "YES")
} catch let error {
print("Got an error \(error)")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 0 :(得分:0)
你是那里的9/10。您需要循环,查看子串“§§§”的范围是什么,如果存在,则用列表中的下一项替换该范围。
例如:
var s = "The Pep Boys are §§§, §§§, and §§§."
var arr = ["Manny", "Moe", "Jack"]
while let r = s.range(of:"§§§") {
s.replaceSubrange(r, with: arr.removeFirst())
}
// The Pep Boys are Manny, Moe, and Jack.
当然,这假设arr
中没有任何字符串包含或生成"§§§"
的新出现,但我认为可以假设为了简单起见。在我的实现中也存在一些故意的低效率,如果目标字符串非常长,这将是令人反感的,但同样,出于教学目的,我认为现在最好保持简单。