struct ContentView: View {
   @State private var text: String = ""
   @State private var selected: TextSelection? = nil

   var body: some View {
      VStack {
         Button("Replace Selected") {
            if let selected = selected, !selected.isInsertion {
               if case .selection(let range) = selected.indices {
                  text.replaceSubrange(range, with: "Pedro")
               }
            }
         }.buttonStyle(.borderedProminent)

         TextEditor(text: $text, selection: $selected)
            .padding(10)
            .scrollContentBackground(.hidden)
            .background(.gray.opacity(0.2))
            .padding(20)
      }
   }
}