/ / Przekazywanie ogranicznika jako argument wiersza poleceń w scala i użycie go do podziału ciągu znaków - scala

Przekazywanie ogranicznika jako argument wiersza poleceń w scala i użycie go do podziału ciągu znaków - scala

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 № 1

Dzieje 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)
}