Mam program scala, w którym biorę "t" jako wejście linii poleceń.
Wewnątrz programu chcę podzielić ciąg znaków na podstawie ogranicznika przekazanego z wiersza poleceń.
val splitter = args(0).charAt(0)
if(splitter == "t")
println("true")
else
println("false")
To drukuje "false" i splitter "".
Powyższa metoda działa dla "," ogranicznika przecinka.
Proszę zasugerować, w jaki sposób przekazać kartę lub inny ogranicznik jako parametr wiersza poleceń i użyć go do celów dzielenia.
Odpowiedzi:
1 dla odpowiedzi № 1Dzieje się tak dlatego, że jeśli "przejeżdżasz" t w linii poleceń, to nadchodzi jako ciąg dwuznakowy t
, a nie tabulator jednoznakowy. Aby zrobić to, co chcesz, nie możesz po prostu zabrać pierwszego bohatera (charAt(0)
), ponieważ będziesz tęsknić za t
. Zamiast tego będziesz musiał go odblokować poprzez konwersję z łańcucha t
do postaci tabulatora.
Prosty sposób:
val splitter = args(0) match {
case "\t" => "t"
case x => x.head // same as x.charAt(0)
}