在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ Scala字符串
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎(chǔ)語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關(guān)鍵字

Scala字符串

本章將介紹Scala中的字符串。 在Scala中的字符串和Java中的一樣,字符串是一個不可變的對象,也就是一個不能修改的對象??梢孕薷牡膶ο?,如數(shù)組,稱為可變對象。字符串是非常有用的對象,在本節(jié)的最后部分,我們將介紹java.lang.String類的一些重要方法。

1.創(chuàng)建一個字符串

以下是創(chuàng)建一個字符串的代碼 -

var greeting = "Hello world!";

// 或者

var greeting:String = "Hello world!";

每當編譯器在代碼中遇到一個字符串文字時,它會創(chuàng)建一個帶有它的值的String對象,在這種情況下是“Hello world!”。String關(guān)鍵字也可以在如上所示的第二個聲明中給出。

請嘗試以下示例程序。

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

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

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\> scalac Demo.scala
D:\> scala Demo

Hello, world!

如前所述,String類是不可變的。創(chuàng)建后的String對象是無法更改的。如果有必要對字符串進行大量修改,那么可考慮使用Scala中提供的StringBuilder類。

2. 字符串長度

用于獲取有關(guān)對象的信息的方法稱為訪問器方法。一個可以與字符串一起使用的訪問器方法是length()方法,它返回字符串對象中包含的字符數(shù)。

使用以下代碼段來查找字符串的長度 -

例子

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

      println( "String Length is : " + len );
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

$ scalac Demo.scala
$ scala Demo

String Length is : 17

3. 連接字符串

String類包括一個連接兩個字符串的方法 -

string1.concat(string2);

這將返回一個新的字符串,字符串string1的尾部添加字符串string2。您也可以使用concat()方法在字符串文字上操作,如下 -

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

字符串通常還使用+運算符連接,如 -

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

這將產(chǎn)生以下結(jié)果 -

"Hello, world!"

以下代碼行將兩個字符串相連接 -

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

      println("Dot " + str1 + str2);
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

Dot Dot saw I was Tod

4. 創(chuàng)建格式化字符串

您可以使用printf()format()方法打印具有格式化數(shù)字或字符串的輸出。 String類具有format()方法,它返回String對象而不是PrintStream對象。

嘗試以下示例程序,它使用printf()方法 -

示例

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

將上述程序保存在源文件:Demo.scala中,以下命令用于編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

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

5. 字符串插值

字符串插值是使用Scala編程語言創(chuàng)建字符串的新方法。此功能支持只在Scala-2.10及更高版本。字符串插值:直接在過程字符串文字中嵌入變量引用的機制。

字符串插值中有三種類型(插值器)實現(xiàn)。

5.1. ‘s’字符串插值器

文字's'允許在處理字符串時直接使用變量。任何在范圍中的String變量可以在字符串中使用。以下是's'字符串插值器的不同用法。

println語句中將String變量($name)附加到普通字符串(Hello)中,以下示例代碼片段用于實現(xiàn)'s'插值器。

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

字符串插入器還可以處理任意表達式。 使用's'字符串插入器處理具有任意表達式(${1 + 1})的字符串(1 + 1)的以下代碼片段。任何表達式都可以嵌入到${}中。

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

嘗試實現(xiàn)'s'插值器的示例程序如下 -

object Demo {
   def main(args: Array[String]) {
      val name = "James"

      println(s"Hello, $name")
      println(s"1 + 1 = ${1 + 1}")
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

Hello, James
1 + 1 = 2

5.2 ‘f’插值器

文字'f'插值器允許創(chuàng)建一個格式化的字符串,類似于C語言中的printf。 在使用'f'插值器時,所有變量引用都應(yīng)該是printf樣式格式說明符,如%d,%i%f等。

我們以一般的字符串為例附加浮點值(height = 1.9d)和字符串變量(name =“James”)。下面的代碼片段實現(xiàn)'f'插值器。這里$name%s打印String變量James$height%2.2f打印浮點值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

它是類型安全的變量引用,以下格式說明符要匹配,否則顯示錯誤。'f'插值器使用Java中可用String格式實用程序(格式說明符)。 默認情況下,變量引用后沒有字符。它將假定為%s的字符串。

5.3 “原始”插值器

'raw'內(nèi)插器類似于's'插值器,除了它不執(zhí)行字符串內(nèi)的文字轉(zhuǎn)義。下表中的代碼段將區(qū)別's''raw'插值器的用法。 在使用s\n效果的輸出中,新行作為原始值輸出,也就是\n將不起作用。它將使用轉(zhuǎn)義字母打印完整的字符串。

  • 's'的插值器使用,程序代碼如下 -

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

    輸出結(jié)果 -

    Result =
    a
    b
    
  • 'raw'的插值器使用,程序代碼如下 -

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

    輸出結(jié)果 -

    Result = \n a \n b
    

字符串方法

以下是java.lang.String類定義的方法列表,可以直接在Scala程序中使用 -

編號 方法 描述
1 char charAt(int index) 返回指定索引處的字符。
2 int compareTo(Object o) 將此String與另一個對象進行比較。
3 int compareTo(String anotherString) 按字典順序比較兩個字符串。
4 int compareToIgnoreCase(String str) 按字典順序比較兩個字符串,忽略大小寫差異。
5 String concat(String str) 將指定的字符串連接到該字符串的末尾。
6 boolean contentEquals(StringBuffer sb) 當且僅當此String表示與指定的StringBuffer的字符序列相同時,才返回true。
7 static String copyValueOf(char[] data) 返回一個字符串,表示指定的數(shù)組中的字符序列。
8 static String copyValueOf(char[] data, int offset, int count) 返回一個字符串,表示指定的數(shù)組中的字符序列。
9 boolean endsWith(String suffix) 測試此字符串是否以指定的字符串為后綴/結(jié)尾。
10 boolean equals(Object anObject) 將此字符串與指定對象進行比較。
11 boolean equalsIgnoreCase(String anotherString) 將此String與另一個String進行比較,并忽略大小寫。
12 byte getBytes() 使用平臺的默認字符集將此String編碼為一系列字節(jié),將結(jié)果存儲到新的字節(jié)數(shù)組中。
13 byte[] getBytes(String charsetName) 使用命名的字符集將此String編碼為一系列字節(jié),將結(jié)果存儲到新的字節(jié)數(shù)組中。
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將此字符串從srcBeginsrcEnd索引處的字符復(fù)制到目標字符數(shù)組(dst)中。
15 int hashCode() 返回此字符串的哈希碼。
16 int indexOf(int ch) 返回指定字符第一次在字符串中出現(xiàn)的索引。
17 int indexOf(int ch, int fromIndex) 返回指定字符以指定的索引開始搜索第一次在字符串內(nèi)出現(xiàn)的索引。
18 int indexOf(String str) 返回指定子字符串在字符串內(nèi)第一次出現(xiàn)的索引。
19 int indexOf(String str, int fromIndex) 返回從指定的索引開始,指定子串的第一次出現(xiàn)在給定字符串中的索引。
20 String intern() 返回字符串對象的規(guī)范表示。
21 int lastIndexOf(int ch) 返回指定字符在字符串中最后一次出現(xiàn)的索引。
22 int lastIndexOf(int ch, int fromIndex) 返回指定字符在給定字符串中的最后一次出現(xiàn)的索引,它從指定的索引開始向后搜索。
23 int lastIndexOf(String str) 返回指定子字符串在字符串內(nèi)的最右邊出現(xiàn)的索引。
24 int lastIndexOf(String str, int fromIndex) 返回指定子字符串在給定字符串中最后一次出現(xiàn)的索引,它從指定索引開始向后搜索。
25 int length() 返回此字符串的長度。
26 boolean matches(String regex) 測試這個字符串是否與給定的正則表達式匹配。
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int offset, int len) 測試兩個字符串區(qū)域是否相等。
28 boolean regionMatches(int toffset, String other, int offset, int len) 測試兩個字符串區(qū)域是否相等。
29 String replace(char oldChar, char newChar) 返回一個新的字符串,此字符串是使用newChar替換此字符串中所有出現(xiàn)的oldChar的結(jié)果。
30 String replaceAll(String regex, String replacement 使用replacement替換與給定正則表達式(regex)匹配的字符串中的每個子字符串。
31 String replaceFirst(String regex, String replacement) 用給定的replacement替換與給定正則表達式(regex)匹配的字符串中的第一個子字符串。
32 String[] split(String regex) 將此字符串拆分為給定正則表達式的匹配項。
33 String[] split(String regex, int limit) 將此字符串拆分為給定正則表達式的匹配項。
34 boolean startsWith(String prefix) 測試此字符串是否以指定的前綴開頭。
35 boolean startsWith(String prefix, int toffset) 測試此字符串是否以指定的前綴開頭,指定一個指定的索引。
36 CharSequence subSequence(int beginIndex, int endIndex) 返回一個新的字符序列,該序列是該序列的子序列。
37 String substring(int beginIndex) 返回一個新字符串,該字符串是此字符串的子字符串。
38 String substring(int beginIndex, int endIndex) 返回一個新字符串,該字符串是此字符串的子字符串。
39 char[] toCharArray() 將此字符串轉(zhuǎn)換為新的字符數(shù)組。
40 String toLowerCase() 使用默認語言環(huán)境的規(guī)則將此String中的所有字符轉(zhuǎn)換為小寫。
41 String toLowerCase(Locale locale) 使用給定的區(qū)域設(shè)置的規(guī)則將此String中的所有字符轉(zhuǎn)換為小寫。
42 String toString() 此對象(已經(jīng)是字符串)本身已被返回。
43 String toUpperCase() 使用默認語言環(huán)境的規(guī)則將此字符串中的所有字符轉(zhuǎn)換為大寫。
44 String toUpperCase(Locale locale) 使用給定的區(qū)域設(shè)置的規(guī)則將此String中的所有字符轉(zhuǎn)換為大寫。
45 String trim() 返回字符串的副本,省略前導(dǎo)和尾隨空格。
46 static String valueOf(primitive data type x) 返回傳遞數(shù)據(jù)類型參數(shù)的字符串表示形式。