2017-07-08 8 views
0

Ich muss alle Leerzeichen mit% 20 ersetzen. Ich schrieb dies in ScalaScala: Ersetzen Sie alle Leerzeichen mit% 20

strToConvert.map(c => if (Character.isSpaceChar(c)) "%20" else c).mkString 

Gibt es einen besseren Weg, dies in Scala zu tun?

[Bearbeiten] Nehmen wir an, replaceAll nicht verfügbar ist, und wir möchten, dass Algorithmus implementieren ähnlich wie replaceAll Methode

+1

'strToConvert.replaceAll (" "" \ s + "" ","% 20 ")' – frozen

+0

Ohne 'replaceAll' zu verwenden, denke ich, dass Sie es richtig gemacht haben. Das einzige, was ich vorschlagen kann, ist das Ersetzen von 'Character.isSpaceChar (c)' durch 'c.isSpaceChar'. Beachten Sie, dass Sie in beiden Fällen möglicherweise Probleme mit Leerzeichen haben, die nicht einem einzelnen Zeichenwert zugeordnet sind (so dass das Leerzeichen durch mehrere Ersatzzeichen dargestellt wird). –

+0

@MikeAllen Danke für den Tipp! Gibt es einen Unterschied zwischen Character.isSpaceChar und c.isSpaceChar neben der Tatsache, dass letzteres weniger Tipparbeit erfordert. – Programmer

Antwort

1

Sie String.replaceAll(what_to_replace, with_what) verwenden können.

z. einzelne Leerzeichen zu ersetzen, mit %20

scala> val input = "this is my http request   execute me" 
input: String = this is my http request   execute me 

scala> input.replaceAll(" ", "%20") 
res1: String = this%20is%20my%20http%20request%20%20%20%20%20%20%20%20%20%20execute%20me 

oder verwenden \\s regex (entspricht einzelnen Leerzeichen)

scala> input.replaceAll("\\s", "%20") 
res2: String = this%20is%20my%20http%20request%20%20%20%20%20%20%20%20%20%20execute%20me 

Wenn Sie mehrere Leerzeichen wollen einen einzigen %20 zu ersetzen, dann verwenden \\s+ die entspricht der Reihenfolge eines oder mehrerer Leerzeichen

scala> input.replaceAll("\\s+", "%20") 
res3: String = this%20is%20my%20http%20request%20execute%20me 
Verwandte Themen