2014-02-24 21 views
12

in Großbuchstaben ist Gibt es eine einfachere Methode, das Regex-Muster in seiner Gesamtheit anzupassen? Um beispielsweise zu prüfen, ob die angegebene Zeichenfolge in Großbuchstaben geschrieben ist, erscheinen die folgenden zwei Methoden zu komplex. Überprüfung stringr Ich fand auch keinen Hinweis auf eine einfachere Lösung.Überprüfen, ob die Zeichenfolge in R

Methode 1:

isUpperMethod1 <- function(s) { 
    return (all(grepl("[[:upper:]]", strsplit(s, "")[[1]]))) 
} 

Methode 2:

isUpperMethod2 <- function(s) { 
    m = regexpr("[[:upper:]]+", s) 
    return (regmatches(s, m) == s) 
} 

Ich lasse absichtlich Handhabung leerer, NA, NULL-Strings aufgeblähten Code zu vermeiden.

Das Großbuchstabenmuster kann verallgemeinert werden, um Muster (oder Zeichensatz) beliebig neu zu definieren.

Ich sehe keine Probleme mit beiden oben genannten Lösungen, außer dass sie für das Problem zu komplex erscheinen.

+13

's == toupper (n)' sein? – Justin

+0

Ich möchte die Lösung verallgemeinerbar zu komplexeren Mustern halten. – topchef

+4

Warum nicht 'grepl ("^[[: upper:]] + $ ", s)'? –

Antwort

19

können Sie verwenden, um die ^ und $ Muster den Anfang und das Ende der Zeichenfolge übereinstimmen

grepl("^[[:upper:]]+$", s) 
8

Warum nicht einfach testen, ob das Wort an sich selbst identisch ist, wenn mit der „toupper“ Funktion in Großbuchstaben umgewandelt ?

word1 <- "TEST" 
word1 == toupper(word1) 

wird TRUE

+0

Die Frage hat "Generalisierungs" -Klausel in ihren Kommentaren diskutiert. – topchef

Verwandte Themen