C'è una grande differenza nell'uso della funzione.
La funzione split
è sovraccarico, e questo è l'attuazione del codice sorgente di Scala:
/** Per ogni linea in questa stringa:
- striscia prefisso principale costituito da spazi vuoti o caratteri di controllo
- seguito da
|
dalla linea.
*/
def stripMargin: String = stripMargin('|')
private def escape(ch: Char): String = "\\Q" + ch + "\\E"
@throws(classOf[java.util.regex.PatternSyntaxException])
def split(separator: Char): Array[String] = toString.split(escape(separator))
@throws(classOf[java.util.regex.PatternSyntaxException])
def split(separators: Array[Char]): Array[String] = {
val re = separators.foldLeft("[")(_+escape(_)) + "]"
toString.split(re)
}
Così, quando si sta chiamando split()
con un char, vi chiedo di raggruppati per quello specifico char:
scala> "ASD-ASD.KZ".split('.')
res0: Array[String] = Array(ASD-ASD, KZ)
E quando si sta chiamando split()
con una stringa, significa che si desidera eseguire un'espressione regolare. Quindi, per voi per ottenere il risultato esatto utilizzando le virgolette, è necessario fare:
scala> "ASD-ASD.KZ".split("\\.")
res2: Array[String] = Array(ASD-ASD, KZ)
Dove:
- Prima
\
sfugge il carattere seguente
- Seconda
\
sfugge il carattere per il punto che è un'espressione regolare e vogliamo utilizzarla come carattere
.
- il carattere per dividere la stringa per
fonte
2016-06-08 08:57:36