Wie bekomme ich den ersten Buchstaben in jedem Wort in scala?

8

Wenn ich den Ausdruck "New York City" habe, wie bekomme ich den ersten Buchstaben jedes Wortes? Mein Googeln hat mir nur gezeigt, wie man den ersten Buchstaben in jedem Wort groß schreibt, was sich scheinbar von dem unterscheidet, was ich versuche zu tun.

Angesichts meiner begrenzten Kenntnisse von Scala könnte ich das wahrscheinlich prozedural machen, aber ich hatte gehofft, dass jemand etwas Scala-Wissen über mich verraten und mir ein Beispiel zeigen könnte, das eine funktionelle Herangehensweise an dieses Problem darstellt.

    
Commander 28.11.2012, 23:59
quelle

5 Antworten

24

Alle anderen Versionen funktionieren gut, aber um Fehler mit schlecht formatierten Strings (zwei Leerzeichen in einer Zeile, leere Zeichenfolge) zu vermeiden, verwenden Sie

%Vor%

was auch für

funktioniert %Vor%

oder sogar

%Vor%

Wie von vorgeschlagen Dhg , möchte man vielleicht auch eine passendere Regex wie "\s+" verwenden. Aber dann könnte man ebensogut etwas Angemessenes verwenden:

%Vor%

(Hier sollte die /\w+/ uns hoffentlich vor pathologischen Fällen bewahren, damit wir mit der .head Version fortfahren können.)

    
Debilski 29.11.2012, 00:17
quelle
13
%Vor%

Dies teilt sich durch "" in ein Array von Wörtern auf. Dann ordnen wir dieses Array zu und rufen String.head auf, der das erste Zeichen erhält.

    
Ivan Meredith 29.11.2012 00:01
quelle
5
%Vor%

gibt die Zeichen:

%Vor%

Wenn Sie eine Zeichenfolge möchten, verwenden Sie mkString für List[Char] :

%Vor%

erhalten:

%Vor%     
Brian 29.11.2012 00:02
quelle
4
%Vor%

Gibt dir ein Char-Array

    
Garrett Hall 29.11.2012 00:02
quelle
2

Hier ist eine Alternative zur Verwendung von Split (Regex).

Der Trick besteht darin, zip zu verwenden, um das Testen des aktuellen und vorherigen Zeichens in demselben zu ermöglichen Iteration, während Sie die Zeichenfolge durchlaufen, bestehen Wortgrenzen aus einem beliebigen Buchstaben, dem ein Nicht-Buchstabe vorangestellt ist.

Die beiden Sonderfälle, der erste und der letzte Buchstabe, werden behandelt, indem 1) ein Leerzeichen an eine Kopie des Strings angehängt wird, die auch den für die Zip-Datei erforderlichen 1-Zeichen-Skew einrichtet und 2) zip schneidet Teilpaare ab.

%Vor%

gibt

zurück %Vor%     
Don Mackenzie 29.11.2012 11:12
quelle

Tags und Links