如何在文本字段 SwiftUI 中用下划线替换空格

How to replace whitespace with underscores in text field SwiftUI

是否可以在用户在文本字段中键入时用另一个字符(在本例中为下划线)替换通过按空格键创建的每个空格?

我发现了一些关于

.replacingOccurrences(of: "", with: "_")

但不知道如何在输入时实时应用它。

这是我使用的带有简单状态变量的文本字段:

TextField("Enter a username", text: $txt)
                    .padding()
                    .disableAutocorrection(true)
                    .autocapitalization(.none)

最简单的版本是用 onChange 监听 txt 的变化:

struct ContentView : View {
    @State private var txt = ""
    
    var body: some View {
        TextField("Enter a username", text: $txt)
            .padding()
            .disableAutocorrection(true)
            .autocapitalization(.none)
            .onChange(of: txt) { newValue in
                txt = newValue.replacingOccurrences(of: " ", with: "_")
            }
    }
}

您可能需要更强大的查找空白的解决方案,因此您可能希望使用此 onChange 方法应用某些解决方案来查找空白字符 here or here

您还可以像这样显示您的文本字段和文本

var body: some View {
        let replace = txt.replacingOccurrences(of: " ", with: "_")
        TextField("Enter a username", text: $txt)
                            .padding()
                            .disableAutocorrection(true)
                            .autocapitalization(.none)
                           
                Text("Your username: \(replace)")
        .padding()