gpt4 book ai didi

Swift 文字和字符串换行符之间的区别

转载 作者:可可西里 更新时间:2023-11-01 00:55:36 25 4
gpt4 key购买 nike

我有一个适用于 iOS 的 Swift 应用程序,它继承自 XMLParser 以解析 XML 文件。在一个部分中,我获取了一个可能包含 \n 字符的属性。这些字符串稍后用作按钮标题。

示例 XML:

<button title="TitleLine1\nTitleLine2"/>

在我的 didStartElement() 函数中:

var buttonTitle : String = attributeDict["title"]

这会像我预期的那样获取标题,但是稍后当我创建按钮并应用标题时,换行符只是直接打印在按钮上,而不是让按钮标题变成两行。

我希望按钮看起来像这样:

TitleLine1
TitleLine2

但它最终是:

TitleLine1\nTitleLine2

如果我完全忘记了 XML 解析并简单地使用像这样的文字字符串对按钮标题进行硬编码,则换行符有效:

button.setTitle("TitleLine1\nTitleLine2", for: .normal)

但是用我的变量设置它会导致换行符被打印出来:

button.setTitle(buttonTitle, for: .normal)

XMLParser 是否有一些不同的方式来处理字符串?如果我简单地使用 XML 解析字符串与文字字符串执行 print(),我会注意到相同的行为。

最佳答案

Swift 字符串文字中的 \n 在编译期间被转换为实际的换行符。

字符\后跟字符n在运行时获取的一些文本中没有任何特殊含义。

您有几个选择。解析 XML 时,您可以处理所有字符串并将出现的字符序列 \n 替换为实际的换行符:

let str = someXMLValue.replacingOccurrences(of: "\\n", with: "\n")

另一种选择是更改您的 XML 结构以使用元素作为标题而不是属性。然后你可以在标题中放一个真正的换行符:

<button>
<title>TitleLine1
TitleLine2</title>
</button>

那么您的 Swift 代码不需要做任何特殊的事情来处理换行符。

关于Swift 文字和字符串换行符之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com