十二.Scala文字列


Scala文字列
次の例では、文字列を定数に割り当てます.
object TestString1 {
   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の方法を紹介します.
1.文字列の作成
文字列の作成例は次のとおりです.
var greeting = "Hello Scala!";
//  
var greeting:String = "Hello Scala!";

文字列にStringタイプを指定する必要はありません.Scalaコンパイラは文字列のタイプをStringと自動的に推定します.次の例のように、文字列をStringタイプとして直接明示的に宣言することもできます.
object Test{
  val greeting:String = "Hello Scala!"

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

Stringオブジェクトは可変ではありません.変更可能な文字列を作成する必要がある場合は、StringBuilderクラスを使用します.例は次のとおりです.
itlocals-MacBook-Pro:string david.tian$ vim TestString.scala
object TestString{
    def main(args: Array[String]){
      val buf =new StringBuilder;
      buf += 'a';
      buf ++= "bcdef"
      println(" buf is : " + buf.toString);
    }
}
itlocals-MacBook-Pro:string david.tian$ scalac TestString.scala
itlocals-MacBook-Pro:string david.tian$ scala TestString
 buf is : abcdef

2.文字列の長さ
文字列の長さはlength()メソッドで取得できます.
itlocals-MacBook-Pro:string david.tian$ vim TestStringLength.scala
object TestStringLength{
        def main(args: Array[String]){
                var url = "www.csdn.net/jssg_tzw";
                val len = url.length();
                println("String url the length is :" + len);
        }
}
itlocals-MacBook-Pro:string david.tian$ scalac TestStringLength.scala
itlocals-MacBook-Pro:string david.tian$ scala TestStringLength
String url the length is :21

3.文字列接続
concat()メソッドを使用して、2つの文字列を接続します(注意:「+」を使用して複数の文字列を接続することもできます):
string1.concat(string2)

≪インスタンス|Instance|emdw≫
scala> "google ".concat("baidu")
res0: String = google baidu

4.フォーマット文字列の作成
Stringクラスではprintf()メソッドを使用して文字列をフォーマットして出力することができ、String format()メソッドはPrintStreamオブジェクトではなくStringオブジェクトを返すことができます.次の例ではprintf()メソッドの使用を示します.
itlocals-MacBook-Pro:string david.tian$ vim TestStringFormat.scala
object TestStringFormat{
        def main(args: Array[String]){
                var floatVar = 13.678
                var intVar = 10000
                var stringVar = "scala and spark"
                var fs = printf("     floatVar :"+"%f,     intVar :"+"%d,    stringVar : "+"%s",floatVar,intVar,stringVar)
                println(fs)
        }
}
itlocals-MacBook-Pro:string david.tian$ scalac TestStringFormat.scala
itlocals-MacBook-Pro:string david.tian$ scala TestStringFormat
     floatVar :13.678000,     intVar :10000,    stringVar : scala and spark()

5.Stringメソッド
次の表はjava.lang.Stringでよく使われる方法を示しています.Scalaにも適用されます.
シーケンス番号
方法
説明
1
char charAt(int index)
指定した位置に戻る文字
2
int compareTo(Object o)
文字列とオブジェクトの比較
3
int compareTo(String anotherString)
2つの文字列を辞書順に比較
4
int compareToIgnoreCase(String str)
2つの文字列を辞書順に比較し、大文字と小文字を考慮しない
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 anotherObject)
この文字列を指定したオブジェクトと比較
11
boolean equalsIgnoreCase(String anotherString)
この文字列を別のStingと比較し、大文字と小文字を考慮しない
12
byte getBytes()
プラットフォームのデフォルト文字セットを使用して、このStringをbyteシーケンスに符号化し、結果を新しいbyte配列に格納します.
13
byte[] getBytes(String charsetName)
指定した文字セットを使用してStringをbyteシーケンスに符号化し、結果を新しいbyte配列に格納します.
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)
2つの文字列領域が等しいかどうかをテストし、大文字と小文字を考慮しません.
28
boolean regionMatches(int toffset, String other, int ooffset, int len)
2つの文字列領域が等しいかどうかをテストします.
29
String replace(char oldChar, char newChar)
新しい文字列を返します.この文字列に表示されるすべてのoldCharをnewCharで置き換えることで得られます.
30
String replaceAll(String regex, String replacement)
指定されたreplacementを使用して、指定された正規表現に一致するすべてのサブ文字列を置換します.
31
String replaceFirst(String regex, String replacement)
指定された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()
この文字列を新しい文字配列に変換
40
String toLowerCase()
デフォルトの言語環境のルールを使用して、Stringのすべての文字を小文字に変換します.
41
String toLowerCase(Locale locale)
指定したLocaleのルールを使用して、Stringのすべての文字を小文字に変換します.
42
String toString()
このオブジェクト自体を返します(すでに文字列です!)
43
String toUpperCase()
デフォルトの言語環境のルールを使用して、Stringのすべての文字を大文字に変換します.
44
String toUpperCase(Locale locale)
指定したLocaleのルールを使用して、Stringのすべての文字を大文字に変換します.
45
String trim()
指定した文字列の先頭と末尾の空白を削除
46
static String valueOf(primitive data type x)
指定したタイプのパラメータを返す文字列の表示形式