从滚动Textview中读取文本并在macOS中插入特定的字符串

时间:2020-08-27 14:32:11

标签: swift xcode macos cocoa

嗨,我想基于MacOS中的用户输入快速创建一个字符串。

例如,如果用户输入了字符串

” 第1行fadsjkf

第2行fasdjkfla

第3行fasdnfkdf

我想在每一行中读取字符串,并插入一些字符或类似字符串

” XYZ Line 1 fadsjkf

ABC Line 2 fasdjkfla

DEF Line 3 fasdnfkdf

如何实现此功能?

1 个答案:

答案 0 :(得分:0)

在您的示例中,用户输入了3行吗?如果是这样,您可以将字符串拆分为数组,在每个项目的开头添加文本并重新组成字符串。

会是这样的:

let someText = """
Line 1 fadsjkf
Line 2 fasdjkfla
Line 3 fasdnfkdf
"""
// May be your text comes as let someText = "Line 1 fadsjkf\nLine 2 fasdjkfla\nLine 3 fasdnfkdf"

let toBeAppended = ["XYZ", "ABC", "DEF"] // Do you want to compute automatically ?
var lines = someText.split(separator: "\n").map { String($0) }
var newLines = ""

for (iLine, line) in lines.enumerated() {
    let newLine = toBeAppended[iLine] + " " + line
    newLines = newLines + newLine + "\n"
}
print(newLines)

并获得:

XYZ Line 1 fadsjkf
ABC Line 2 fasdjkfla
DEF Line 3 fasdnfkdf

已编辑

如果您希望多于3行且行数不确定:

let someText = "Line 1 fadsjkf\nLine 2 fasdjkfla\nLine 3 fasdnfkdf\nLine 4 fasdjkflaa\nLine 5 fasdjkflab\nLine 6 fasdjkflac\nLine 7 fasdjkflad\nLine 8 fasdjkflae\nLine 9 fasdjkflaf\nLine 10 fasdjkflag\nLine 11 fasdjkflah\nLine 12 fasdjkflai"
let toBeAppended = ["XYZ", "ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZ@"] // 9 here, up to you to add more ; beyond this, add for instance @@@
var lines = someText.split(separator: "\n").map { String($0) }
var newLines = ""

for (iLine, line) in lines.enumerated() {
    let newLine = iLine < toBeAppended.count ? toBeAppended[iLine] + " " + line : "@@@ " + line
    newLines = newLines + newLine + "\n"
}
print(newLines)

您得到:

XYZ Line 1 fadsjkf
ABC Line 2 fasdjkfla
DEF Line 3 fasdnfkdf
GHI Line 4 fasdjkflaa
JKL Line 5 fasdjkflab
MNO Line 6 fasdjkflac
PQR Line 7 fasdjkflad
STU Line 8 fasdjkflae
VWX Line 9 fasdjkflaf
YZ@ Line 10 fasdjkflag
@@@ Line 11 fasdjkflah
@@@ Line 12 fasdjkflai
相关问题