English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala 文字列

以下のサンプルでは、文字列を定数に割り当てます:

object Test {
   val greeting: String = "Hello,World!"
   def main(args: Array[String]) {
      println( greeting )
   }
}

以下サンプルでは、変数greetingを定義し、文字列定数として、そのタイプはString(java.lang.String)です。

Scala では、文字列の型は実際には Java String であり、String クラス自体は存在しません。

Scala では、String は変更不可能なオブジェクトですので、そのオブジェクトは変更できません。これは、文字列を変更すると新しい文字列オブジェクトが生成されることを意味します。

しかし、配列などの他のオブジェクトは変更可能なオブジェクトです。次に、常用の java.lang.String メソッドを紹介します。

文字列の作成

文字列の作成例:

var greeting = "Hello World!";
または
var greeting:String = "Hello World!";

文字列に String 型を指定する必要はありません。なぜなら、Scala コンパイラは自動的に文字列の型を String として推測します。

もちろん、文字列を直接 String 型として宣言することもできます。以下の例を参照してください:

object Test {
   val greeting: String = "Hello, World!"
   def main(args: Array[String]) {
      println( greeting )
   }
}

上記のコードを実行すると、出力結果は以下の通りです:

$ scalac Test.scala
$ scala Test
Hello, world!

私たちは前に述べたように、String オブジェクトは変更不可能です。変更可能な文字列を作成するには、StringBuilder クラスを使用することができます。以下の例を参照してください:

object Test {
   def main(args: Array[String]) {
      val buf = new StringBuilder;
      buf += 'a'
      buf ++= "bcdef"
      println( "buf is : " + buf.toString );
   }
}

上記のコードを実行すると、出力結果は以下の通りです:

$ scalac Test.scala
$ scala Test
buf is : abcdef

文字列長さ

私たちは length() メソッドを使用して文字列の長さを取得することができます:

オンラインサンプル

object Test {
   def main(args: Array[String]) {
      var palindrome = "ja.oldtoolbag.com";
      var len = palindrome.length();
      println( "String Length is : " + len );
   }
}

上記のコードを実行すると、出力結果は以下の通りです:

$ scalac Test.scala
$ scala Test
String Length is : 14

文字列結合

String クラスで concat() メソッドを使用して二つの文字列を結合する:

string1.concat(string2);

サンプルデモ:

scala> "基本教程網公式: ".concat("ja.oldtoolbag.com");
res0: String = 基本教程網公式: ja.oldtoolbag.com

同様に、プラス記号(+)を結合:

scala> "基本教程網公式: " + " ja.oldtoolbag.com"
res1: String = 基础教程网官网: ja.oldtoolbag.com

以下は完全な例を見てみましょう:

object Test {
   def main(args: Array[String]) {
      var str1 = "基础教程网官网:";
      var str2 = "ja.oldtoolbag.com";
      var str3 = "基础教程网的Slogan为:";
      var str4 = "学好基础,才能走的更远!";
      println( str1 + str2 );
      println( str3.concat(str4) ;
   }
}

上記のコードを実行すると、出力結果は以下の通りです:

$ scalac Test.scala
$ scala Test
基础教程网公式サイト:ja.oldtoolbag.com
基础教程网的Sloganは:学好基础,才能走的更远!

整形文字列の作成

Stringクラスでは、printf()メソッドを使用して文字列を整形し出力し、String format()メソッドはPrintStreamオブジェクトではなくStringオブジェクトを返します。以下はprintf()メソッドの使用例です:

object Test {
   def main(args: Array[String]) {
      var floatVar = 12.456
      var intVar = 2000
      var stringVar = "基础教程网!"
      var fs = printf("浮点型変数は" +
                   "%f、整型変数は%d、文字列は" +
                   " %s", floatVar, intVar, stringVar)
      println(fs)
   }
}

上記のコードを実行すると、出力結果は以下の通りです:

$ scalac Test.scala
$ scala Test
浮点型変数は 12.456000、整型変数は 2000、文字列は「  基础教程网!()」です

String メソッド

以下の表は、java.lang.Stringでよく使用されるメソッドを示し、Scalaで使用できます:

序号メソッドおよび説明
1

char charAt(int index)

指定された位置の文字を返します

2

int compareTo(Object o)

文字列とオブジェクトを比較します

3

int compareTo(String anotherString)

二つの文字列を辞書順に比較します

4

int compareToIgnoreCase(String str)

大文字と小文字を区別しないで二つの文字列を辞書順に比較します

5

String concat(String str)

指定の文字列をこの文字列の末尾に接続します

6

boolean contentEquals(StringBuffer sb)

この文字列と指定された StringBuffer を比較します

7

static String copyValueOf(char[] data)

指定された配列がこの文字列の文字シーケンスを表す String を返します

8

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

指定された配列がこの文字列の文字シーケンスを表す String を返します

9

boolean endsWith(String suffix)

この文字列が指定された接尾辞で終わるかどうかをテストします

10

boolean equals(Object anObject)

この文字列と指定されたオブジェクトを比較します

11

boolean equalsIgnoreCase(String anotherString)

この String と別の String を無視して比較します

12

byte getBytes()

プラットフォームのデフォルトの文字集合を使用して、この String をバイトシーケンスにエンコードし、結果を新しいバイト配列に保存します

13

byte[] getBytes(String charsetName

指定された文字集合を使用して、この String をバイトシーケンスにエンコードし、結果を新しいバイト配列に保存します

14

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

指定された文字をこの文字列から目标のキャラクターアレイにコピーします

15

int hashCode()

この文字列のハッシュコードを返します

16

int indexOf(int ch)

指定された文字がこの文字列内で最初に現れる場所のインデックスを返します

17

int indexOf(int ch, int fromIndex)

指定された文字がこの文字列内で最初に現れる場所のインデックスを、指定されたインデックスから始めて検索して返します

18

int indexOf(String str)

指定された子文字列がこの文字列内で最初に現れる場所のインデックスを返します

19

int indexOf(String str, int fromIndex)

指定された子文字列がこの文字列内で最初に現れる場所のインデックスを、指定されたインデックスから始めて検索して返します

20

String intern()

この文字列オブジェクトの正規化された表現形式を返します

21

int lastIndexOf(int ch)

指定された文字がこの文字列内で最後に現れる場所のインデックスを返します

22

int lastIndexOf(int ch, int fromIndex)

指定された文字がこの文字列中最後の場所に現れるインデックスを返します。指定されたインデックスから逆方向に検索します。

23

int lastIndexOf(String str)

指定された子文字列がこの文字列中最右端に現れるインデックスを返します。

24

int lastIndexOf(String str, int fromIndex)

指定された子文字列がこの文字列中最後の場所に現れるインデックスを返します。指定されたインデックスから逆方向に検索します。

25

int length()

この文字列の長さを返します。

26

boolean matches(String regex)

この文字列が指定された正規表現に一致するか通知します。

27

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

二つの文字列の区域が一致するかテストします。

28

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

二つの文字列の区域が一致するかテストします。

29

String replace(char oldChar, char newChar)

newCharでこの文字列に現れるすべてのoldCharを置換して新しい文字列を返します。

30

String replaceAll(String regex, String replacement

指定された置換文字列でこの文字列のすべての一致する正規表現の子文字列を置換します。

31

String replaceFirst(String regex, String replacement)

指定された置換文字列でこの文字列の最初に一致する正規表現の子文字列を置換します。

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

この文字列を新しいキャラクターアrrayに変換します

40

String toLowerCase()

この String 中の全ての文字をデフォルトの言語環境の規則に従って小文字に変換します

41

String toLowerCase(Locale locale)

この String 中の全ての文字を指定された Locale の規則に従って小文字に変換します

42

String toString()

このオブジェクト自体を返します(既に文字列です!)

43

String toUpperCase()

この String 中の全ての文字をデフォルトの言語環境の規則に従って大文字に変換します

44

String toUpperCase(Locale locale)

この String 中の全ての文字を指定された Locale の規則に従って大文字に変換します

45

String trim()

指定された文字列の先頭と末尾の空白文字を削除します

46

static String valueOf(primitive data type x)

指定された型の文字列表現を返します