Scala - Streicher

Dieses Kapitel führt Sie durch die Scala-Saiten. In Scala wie in Java ist eine Zeichenfolge ein unveränderliches Objekt, dh ein Objekt, das nicht geändert werden kann. Andererseits werden Objekte, die wie Arrays geändert werden können, als veränderbare Objekte bezeichnet. Strings sind sehr nützliche Objekte. Im Rest dieses Abschnitts stellen wir wichtige Methoden von vorjava.lang.String Klasse.

String erstellen

Der folgende Code kann verwendet werden, um einen String zu erstellen -

var greeting = "Hello world!";

or

var greeting:String = "Hello world!";

Immer wenn der Compiler auf ein Zeichenfolgenliteral im Code stößt, erstellt er ein Zeichenfolgenobjekt mit dem Wert "Hallo Welt!". Das Schlüsselwort String kann auch in einer alternativen Deklaration angegeben werden, wie oben gezeigt.

Versuchen Sie das folgende Beispielprogramm.

Beispiel

object Demo {
   val greeting: String = "Hello, world!"

   def main(args: Array[String]) {
      println( greeting )
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

Hello, world!

Wie bereits erwähnt, ist die String-Klasse unveränderlich. Einmal erstelltes String-Objekt kann nicht geändert werden. Wenn viele Änderungen an Zeichenfolgen vorgenommen werden müssen, verwenden Sie die in Scala! Verfügbare String Builder-Klasse.

String-Länge

Methoden zum Abrufen von Informationen zu einem Objekt werden als Zugriffsmethoden bezeichnet. Eine Zugriffsmethode, die mit Zeichenfolgen verwendet werden kann, ist die length () -Methode, die die Anzahl der im Zeichenfolgenobjekt enthaltenen Zeichen zurückgibt.

Verwenden Sie das folgende Codesegment, um die Länge einer Zeichenfolge zu ermitteln:

Beispiel

object Demo {
   def main(args: Array[String]) {
      var palindrome = "Dot saw I was Tod";
      var len = palindrome.length();
      
      println( "String Length is : " + len );
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

String Length is : 17

Verketten von Strings

Die String-Klasse enthält eine Methode zum Verketten von zwei Strings -

string1.concat(string2);

Dies gibt eine neue Zeichenfolge zurück, die Zeichenfolge1 ist, und am Ende wird Zeichenfolge2 hinzugefügt. Sie können die concat () -Methode auch mit String-Literalen verwenden, wie in -

"My name is ".concat("Zara");

Zeichenfolgen werden häufiger mit dem Operator + verkettet, wie in -

"Hello," + " world" + "!"

Was zu -

"Hello, world!"

Die folgenden Codezeilen zum Ermitteln der Zeichenfolgenlänge.

Beispiel

object Demo {
   def main(args: Array[String]) {
      var str1 = "Dot saw I was ";
      var str2 =  "Tod";
      
      println("Dot " + str1 + str2);
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

Dot Dot saw I was Tod

Formatzeichenfolgen erstellen

Sie haben die Methoden printf () und format (), um Ausgaben mit formatierten Zahlen zu drucken. Die String-Klasse verfügt über eine äquivalente Klassenmethode, format (), die ein String-Objekt anstelle eines PrintStream-Objekts zurückgibt.

Probieren Sie das folgende Beispielprogramm aus, das die Methode printf () verwendet:

Beispiel

object Demo {
   def main(args: Array[String]) {
      var floatVar = 12.456
      var intVar = 2000
      var stringVar = "Hello, Scala!"
      
      var fs = printf("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string" + "is %s", floatVar, intVar, stringVar);
      
      println(fs)
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

The value of the float variable is 12.456000, 
while the value of the integer variable is 2000, 
and the string is Hello, Scala!()

String-Interpolation

Die String-Interpolation ist die neue Methode zum Erstellen von Strings in der Programmiersprache Scala. Diese Funktion unterstützt die Versionen von Scala-2.10 und höher. String-Interpolation: Der Mechanismus zum direkten Einbetten von Variablenreferenzen in das Prozess-String-Literal.

Es gibt drei Arten (Interpolatoren) von Implementierungen in der String-Interpolation.

Der 's' String Interpolator

Das Literal 's' ermöglicht die Verwendung von Variablen direkt bei der Verarbeitung einer Zeichenfolge, wenn Sie 's' voranstellen. Jede String-Variable mit in einem Bereich, mit der in einem String verwendet werden kann. Das Folgende sind die verschiedenen Verwendungen des String-Interpolators von 's'.

Das folgende Beispielcode-Snippet für die Implementierung des Interpolators 's' beim Anhängen der String-Variablen ($ name) an einen normalen String (Hello) in der println-Anweisung.

val name = “James”
println(s “Hello, $name”) //output: Hello, James

String-Interpolater können auch beliebige Ausdrücke verarbeiten. Das folgende Codefragment zum Verarbeiten eines Strings (1 + 1) mit einem beliebigen Ausdruck ($ {1 + 1}) unter Verwendung des String-Interpolators 's'. Jeder beliebige Ausdruck kann in '$ {}' eingebettet werden.

println(s “1 + 1 = ${1 + 1}”) //output: 1 + 1 = 2

Probieren Sie das folgende Beispielprogramm zur Implementierung des Interpolators aus.

Beispiel

object Demo {
   def main(args: Array[String]) {
      val name = "James"
      
      println(s"Hello, $name")
      println(s"1 + 1 = ${1 + 1}")
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

Hello, James
1 + 1 = 2

Der 'f'-Interpolator

Der Literal-Interpolator 'f' ermöglicht das Erstellen eines formatierten Strings, ähnlich wie printf in der Sprache C. Bei Verwendung des Interpolators 'f' sollte auf alle Variablenreferenzen das von folgenprintf Stilformatbezeichner wie% d,% i,% f usw.

Nehmen wir ein Beispiel für das Anhängen eines Gleitkommawerts (Höhe = 1,9d) und einer Zeichenfolgenvariablen (Name = „James“) an eine normale Zeichenfolge. Der folgende Codeausschnitt zur Implementierung des Interpolators 'f'. Hier $ name% s zum Drucken (String-Variable) James und $ height% 2.2f zum Drucken (Gleitkommawert) 1,90.

val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") //James is 1.90 meters tall

Es ist typsicher (dh) die Variablenreferenz und der folgende Formatbezeichner sollten übereinstimmen, andernfalls wird ein Fehler angezeigt. Der Interpolator 'f' verwendet die in Java verfügbaren Dienstprogramme zum Formatieren von Zeichenfolgen (Formatspezifizierer). Standardmäßig gibt es nach der Variablenreferenz kein% -Zeichen. Es wird als% s (String) angenommen.

'roher' Interpolator

Der 'rohe' Interpolator ähnelt dem 's'-Interpolator, außer dass er kein Entweichen von Literalen innerhalb einer Zeichenfolge ausführt. Die folgenden Codeausschnitte in einer Tabelle unterscheiden sich in der Verwendung von 's'- und' raw'-Interpolatoren. Bei Ausgaben von 's' Nutzung '\ n' Effekten als neue Zeile und bei Ausgabe von 'roher' Nutzung wirkt sich '\ n' nicht aus. Es wird die gesamte Zeichenfolge mit Escape-Buchstaben gedruckt.

Verwendung des Interpolators 'rohe' Interpolatorverwendung

Program - -

object Demo {
   def main(args: Array[String]) {
      println(s"Result = \n a \n b")
   }
}

Program - -

object Demo {
   def main(args: Array[String]) {
      println(raw"Result = \n a \n b")
   }
}

Output - -

Result =
a
b

Output - -

Result = \n a \n b

String-Methoden

Es folgt die Liste der von definierten Methoden java.lang.String Klasse und kann direkt in Ihren Scala-Programmen verwendet werden -

Sr.Nr. Methoden mit Beschreibung
1

char charAt(int index)

Gibt das Zeichen am angegebenen Index zurück.

2

int compareTo(Object o)

Vergleicht diesen String mit einem anderen Objekt.

3

int compareTo(String anotherString)

Vergleicht zwei Zeichenfolgen lexikografisch.

4

int compareToIgnoreCase(String str)

Vergleicht zwei Zeichenfolgen lexikografisch und ignoriert dabei Fallunterschiede.

5

String concat(String str)

Verkettet die angegebene Zeichenfolge mit dem Ende dieser Zeichenfolge.

6

boolean contentEquals(StringBuffer sb)

Gibt nur dann true zurück, wenn dieser String dieselbe Zeichenfolge wie der angegebene StringBuffer darstellt.

7

static String copyValueOf(char[] data)

Gibt eine Zeichenfolge zurück, die die Zeichenfolge im angegebenen Array darstellt.

8

static String copyValueOf(char[] data, int offset, int count)

Gibt eine Zeichenfolge zurück, die die Zeichenfolge im angegebenen Array darstellt.

9

boolean endsWith(String suffix)

Testet, ob diese Zeichenfolge mit dem angegebenen Suffix endet.

10

boolean equals(Object anObject)

Vergleicht diese Zeichenfolge mit dem angegebenen Objekt.

11

boolean equalsIgnoreCase(String anotherString)

Vergleicht diesen String mit einem anderen String und ignoriert dabei die Überlegungen zur Groß- und Kleinschreibung.

12

byte getBytes()

Codiert diesen String mit dem Standardzeichensatz der Plattform in eine Folge von Bytes und speichert das Ergebnis in einem neuen Byte-Array.

13

byte[] getBytes(String charsetName)

Codiert diesen String mithilfe des benannten Zeichensatzes in eine Folge von Bytes und speichert das Ergebnis in einem neuen Byte-Array.

14

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

Kopiert Zeichen aus dieser Zeichenfolge in das Zielzeichenarray.

15

int hashCode()

Gibt einen Hash-Code für diese Zeichenfolge zurück.

16

int indexOf(int ch)

Gibt den Index innerhalb dieser Zeichenfolge des ersten Vorkommens des angegebenen Zeichens zurück.

17

int indexOf(int ch, int fromIndex)

Gibt den Index innerhalb dieser Zeichenfolge des ersten Vorkommens des angegebenen Zeichens zurück und startet die Suche am angegebenen Index.

18

int indexOf(String str)

Gibt den Index innerhalb dieser Zeichenfolge des ersten Auftretens des angegebenen Teilstrings zurück.

19

int indexOf(String str, int fromIndex)

Gibt den Index innerhalb dieser Zeichenfolge des ersten Auftretens des angegebenen Teilstrings zurück, beginnend mit dem angegebenen Index.

20

String intern()

Gibt eine kanonische Darstellung für das Zeichenfolgenobjekt zurück.

21

int lastIndexOf(int ch)

Gibt den Index innerhalb dieser Zeichenfolge des letzten Vorkommens des angegebenen Zeichens zurück.

22

int lastIndexOf(int ch, int fromIndex)

Gibt den Index innerhalb dieser Zeichenfolge des letzten Vorkommens des angegebenen Zeichens zurück und sucht ab dem angegebenen Index rückwärts.

23

int lastIndexOf(String str)

Gibt den Index innerhalb dieser Zeichenfolge des Auftretens der angegebenen Teilzeichenfolge ganz rechts zurück.

24

int lastIndexOf(String str, int fromIndex)

Gibt den Index innerhalb dieser Zeichenfolge des letzten Vorkommens der angegebenen Teilzeichenfolge zurück und sucht ab dem angegebenen Index rückwärts.

25

int length()

Gibt die Länge dieser Zeichenfolge zurück.

26

boolean matches(String regex)

Gibt an, ob diese Zeichenfolge mit dem angegebenen regulären Ausdruck übereinstimmt.

27

boolean regionMatches(boolean ignoreCase, int toffset, String other, int offset, int len)

Testet, ob zwei Zeichenfolgenbereiche gleich sind.

28

boolean regionMatches(int toffset, String other, int offset, int len)

Testet, ob zwei Zeichenfolgenbereiche gleich sind.

29

String replace(char oldChar, char newChar)

Gibt eine neue Zeichenfolge zurück, die sich aus dem Ersetzen aller Vorkommen von oldChar in dieser Zeichenfolge durch newChar ergibt.

30

String replaceAll(String regex, String replacement

Ersetzt jeden Teilstring dieser Zeichenfolge, der dem angegebenen regulären Ausdruck entspricht, durch den angegebenen Ersatz.

31

String replaceFirst(String regex, String replacement)

Ersetzt den ersten Teilstring dieser Zeichenfolge, der dem angegebenen regulären Ausdruck entspricht, durch den angegebenen Ersatz.

32

String[] split(String regex)

Teilt diese Zeichenfolge um Übereinstimmungen des angegebenen regulären Ausdrucks.

33

String[] split(String regex, int limit)

Teilt diese Zeichenfolge um Übereinstimmungen des angegebenen regulären Ausdrucks.

34

boolean startsWith(String prefix)

Testet, ob diese Zeichenfolge mit dem angegebenen Präfix beginnt.

35

boolean startsWith(String prefix, int toffset)

Testet, ob diese Zeichenfolge mit dem angegebenen Präfix beginnt, das mit einem angegebenen Index beginnt.

36

CharSequence subSequence(int beginIndex, int endIndex)

Gibt eine neue Zeichenfolge zurück, die eine Teilsequenz dieser Folge ist.

37

String substring(int beginIndex)

Gibt eine neue Zeichenfolge zurück, die eine Teilzeichenfolge dieser Zeichenfolge ist.

38

String substring(int beginIndex, int endIndex)

Gibt eine neue Zeichenfolge zurück, die eine Teilzeichenfolge dieser Zeichenfolge ist.

39

char[] toCharArray()

Konvertiert diese Zeichenfolge in ein neues Zeichenarray.

40

String toLowerCase()

Konvertiert alle Zeichen in dieser Zeichenfolge nach den Regeln des Standardgebietsschemas in Kleinbuchstaben.

41

String toLowerCase(Locale locale)

Konvertiert alle Zeichen in dieser Zeichenfolge nach den Regeln des angegebenen Gebietsschemas in Kleinbuchstaben.

42

String toString()

Dieses Objekt (das bereits eine Zeichenfolge ist!) Wird selbst zurückgegeben.

43

String toUpperCase()

Konvertiert alle Zeichen in dieser Zeichenfolge nach den Regeln des Standardgebietsschemas in Großbuchstaben.

44

String toUpperCase(Locale locale)

Konvertiert alle Zeichen in dieser Zeichenfolge nach den Regeln des angegebenen Gebietsschemas in Großbuchstaben.

45

String trim()

Gibt eine Kopie der Zeichenfolge zurück, wobei führende und nachfolgende Leerzeichen weggelassen werden.

46

static String valueOf(primitive data type x)

Gibt die Zeichenfolgendarstellung des übergebenen Datentyparguments zurück.