如何将 SwiftUI TextField 中的换行符转义序列“\n”处理为换行符?

How can you process a newline escape sequence "\n" in a SwiftUI TextField as a line break?

我正在尝试创建一个简单的文本字段,允许输入带有换行符序列并输出带有换行符的文本。

struct Foo: View {
  @State private var inputText: String

  var body: some View {
    VStack {
      TextField("foo", text: $inputText)
      Text(inputText)
    }
  }
}

换行符序列在 Text("hello\nworld") 中工作正常,但如果与 TextField 一起使用,将只显示“\n”而不是换行符。我也尝试访问绑定字符串的 wrappedValue 无济于事。我在这里错过了什么?


编辑:我对多行输入不感兴趣。我对像“hello\nworld”这样的单行输入很感兴趣。但是,当我通过 TextField 在绑定变量中捕获“hello\nworld”时,我没有看到我期望的输出,先是 hello,然后是换行符,然后是 world。相反,我看到的字符串与输入的完全一样:hello\nworld.

听起来您想要获取用户输入的字符串“Hello\nworld”(读作转义字符串为“Hello\nworld”)并替换文字(非转义) "\n" 加上换行符。

这样做可以:

struct ContentView: View {
    @State private var inputText: String = ""
    
    var body: some View {
        VStack {
            TextField("foo", text: $inputText)
            Text(inputText.replacingOccurrences(of: "\n", with: "\n"))
        }
    }
}