Frage Entfernen von Klammern aus einer Zeichenfolge


Ich habe einen Zeichenvektor, in dem jedes Element in Klammern eingeschlossen ist. Ich will um die Klammern zu entfernen und nur die Zeichenfolge zu haben.

Also habe ich es versucht:

n = c("[Dave]", "[Tony]", "[Sara]")

paste("", n, "", sep="")

Leider funktioniert das aus irgendeinem Grund nicht. Ich habe die gleiche Aufgabe ausgeführt, bevor ich den gleichen Code verwende, und bin mir nicht sicher, warum es diesmal nicht funktioniert.

Ich möchte gehen '[Dave]' zu 'Dave'.

Was mache ich falsch?


16
2017-08-25 19:03


Ursprung


Antworten:


Sie könnten die Klammern wie folgt auslesen:

n = c("[Dave]", "[Tony]", "[Sara]")

gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"

36
2017-08-25 19:10



Eine reguläre Ausdrucksersetzung wird es tun. Sehen Sie sich die Funktion gsub () an.

Dies gibt Ihnen, was Sie wollen (es entfernt jede Instanz von '[' oder ']'):

gsub("\\[|\\]", "", n)

9
2017-08-25 19:10



Die anderen Antworten sollten ausreichen, um die gewünschte Ausgabe zu erhalten. Ich wollte nur kurz erklären, warum das, was du versucht hast, nicht funktioniert hat.

paste  verkettet Zeichenketten. Wenn du paste eine leere Zeichenkette, "", zu etwas mit einem Trennzeichen, das auch eine leere Zeichenfolge ist, haben Sie wirklich nichts geändert. Damit paste kann eine Zeichenfolge nicht kürzer machen; Das Ergebnis ist entweder das gleiche (wie in Ihrem Beispiel) oder länger.


5
2017-08-25 19:16



Wenn innerhalb von Ordinary arbeiten:

library(tidyverse); library(stringr)

n = c("[Dave]", "[Tony]", "[Sara]")

n %>% str_replace_all("\\[|\\]", "")
[1] "Dave" "Tony" "Sara"

2
2017-11-14 18:57