2017-02-09 4 views
2

Wie erhalte ich den Teil für die Zeichenfolge:Wie erhalten Sie Teilstrings in Scala?

"s3n://bucket/test/files/*/*" 

Ich mag würde S3N bekommen: // Eimer/test/Dateien allein. Ich versuchte den Split:

"s3n://bucket/test/files/*/*".split("/*/*") aber das gibt mir Array von Zeichenfolgen mit jedem Zeichen.

Antwort

6

Das Argument zum Aufteilen ist eine Regex und /*/* entspricht allen Zeichen in Ihrer Zeichenfolge. Sie müssen * entkommen:

"s3n://bucket/test/files/*/*".split("/\\*/\\*") 

Eine Alternative zu split in diesem Fall sein könnte:

"s3n://bucket/test/files/*/*".stripSuffix("/*/*") 
3

Ein paar Optionen, die nicht einen regulären Ausdruck verwenden.

Mit takeWhile gibt "s3n: // bucket/test/files /", die den letzten Schrägstrich enthält.

scala> s.takeWhile(_ != '*') 
res11: String = s3n://bucket/test/files/ 

indexOf Mit dem ersten „*“ zu finden und nehmen ein Zeichen weniger als die Ausgabe gibt Ihnen angeben.

scala> s.slice(0,s.indexOf("*") - 1) 
res14: String = s3n://bucket/test/files 
Verwandte Themen