スカラ文字列
次の例では、文字列を定数に割り当てます:
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!";
Scala コンパイラーは文字列型が String であると自動的に推論するため、文字列の String 型を指定する必要はありません。
もちろん、次の例に示すように、文字列を String 型として直接宣言することもできます:
object Test { val greeting: String = "Hello, World!" def main(args: Array[String]) { println( greeting ) } }
上記のコードを実行すると、出力結果は次のようになります:
$ scalac Test.scala $ scala Test Hello, world!
String オブジェクトは不変であると前述しました。変更可能な文字列については、次の例に示すように String Builder クラスを使用できます:
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 = "www.php.cn"; var len = palindrome.length(); println( "String Length is : " + len ); } }
上記のコードを実行すると、出力結果は次のようになります:
$ scalac Test.scala $ scala Test String Length is : 14
文字列接続
String クラスの concat() メソッドを使用します2 つの文字列を接続するには:
string1.concat(string2);
デモの例:
scala> "php中文网官网: ".concat("www.php.cn"); res0: String = php中文网官网: www.php.cn
同じ プラス記号 (+) を使用して接続することもできます:
scala> "php中文网官网: " + " www.php.cn" res1: String = php中文网官网: www.php.cn
完全な例を見てみましょう:
object Test { def main(args: Array[String]) { var str1 = "php中文网官网:"; var str2 = "www.php.cn"; var str3 = "php中文网的 Slogan 为:"; var str4 = " php中文网"; println( str1 + str2 ); println( str3.concat(str4) ); } }
上記のコードを実行すると、出力結果は次のようになります。
$ scalac Test.scala $ scala Test php中文网官网:www.php.cn php中文网的 Slogan 为: php中文网
フォーマットされた文字列を作成する
String クラスで使用できます。 printf() メソッドは、文字列をフォーマットして出力するために使用されます。 String format() メソッドは、PrintStream オブジェクトの代わりに String オブジェクトを返すことができます。次の例は、printf() メソッドの使用法を示しています。
object Test { def main(args: Array[String]) { var floatVar = 12.456 var intVar = 2000 var stringVar = "php中文网!" var fs = printf("浮点型变量为 " + "%f, 整型变量为 %d, 字符串为 " + " %s", floatVar, intVar, stringVar) println(fs) } }
上記のコードを実行すると、出力結果は次のようになります:
$ scalac Test.scala $ scala Test 浮点型变量为 12.456000, 整型变量为 2000, 字符串为 php中文网!()
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 と比較します。 S7 |
Static String Copyvalueof (Char [] data) | 文字列の文字列を表す、指定された配列内の文字列の文字列を返します 。指定された配列内の文字シーケンスを表す String を返します |
boolean endsWith(String suffix) この文字列が指定された接尾辞で終わるかどうかをテストします
| |
ブール値quals(Object anObject) この文字列を指定されたオブジェクトと比較します | |
booleanqualsIgnoreCase(String anotherString) 大文字と小文字を区別せずに、この文字列を別の文字列と比較します | |
byte getBytes() プラットフォームのデフォルトの文字セットを使用してこの文字列をバイトシーケンスにエンコードし、結果を新しいバイト配列に格納します | |
byte[] getBytes( String charsetName は、指定された文字セットを使用してこの String をバイト シーケンスにエンコードし、結果を新しいバイト配列に格納します | |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) この文字列からターゲット文字配列に文字をコピーします | |
int hashCode() この文字列のハッシュコードを返します | |
int IndexOf(int ch) この文字列内で指定された文字が最初に出現するインデックスを返します | |
int IndexOf(int ch, int fromIndex) 指定された文字がこの文字列内に初めて出現し、指定されたインデックスから検索を開始します | |
intindexOf(String str) この文字列内で指定された部分文字列が最初に出現するインデックスを返しますstring | |
intindexOf(String str, int fromIndex) 指定された部分文字列を返します指定されたインデックスから始まる、この文字列内で最初に出現する文字列のインデックス | |
String intern() 文字列オブジェクトの正規化された表現を返します | |
int lastIndexOf(int ch) 指定された文字が最後に出現したインデックスを返しますこの文字列 | |
int lastIndexOf(int ch, int fromIndex) この文字列内で指定された文字が最後に出現したインデックスを返し、指定されたインデックスから開始して逆方向検索を実行します
| |
int lastIndexOf(String str) この文字列の右端にあるインデックスの指定された部分文字列を返します | |
int (文字列 str, int fromIndex ) この文字列内で指定された部分文字列が最後に出現したインデックスを返し、指定されたインデックスから逆検索を開始します | |
25 | int length() この文字列の長さを返します |
26 | booleanmatches(String regex) この文字列が指定された正規表現と一致するかどうかを示します |
27 | booleanregionMatches(booleanignoreCase, int to ffset, String other,オフセット, int len) 2 つの文字列領域が等しいかどうかをテストします |
28 | booleanregionMatches(int toffset, String other, int ooffset, int len) テスト 2 文字列領域は等しいか? |
29 | String replace(char oldChar, char newChar) この文字列内の oldChar をすべて newChar に置き換えることによって得られる新しい文字列を返します |
30 | 文字列replaceAll(String regex, String replace 指定された正規表現に一致するこの文字列のすべての部分文字列を指定された置換で置き換えます |
31 | String replaceFirst(String regex, String replace) 指定された正規表現と指定された置換に一致するこの文字列の最初の部分文字列 |
32 | String[] Split(String regex) 指定された正規表現の一致に基づいてこの文字列を分割します |
33 | String[] Split(String regex, int limit) 指定された正規表現の一致に基づいてこの文字列を分割します |
34 | booleanstartsWith(String prefix) この文字列が指定された接頭辞で始まるかどうかをテストします |
35 | boolean startingWith (String prefix, int toffset) 指定されたインデックスで始まるこの文字列の部分文字列が指定された接頭辞で始まるかどうかをテストしますprefix |
36 | CharSequence subSequence(int beginIndex, int endIndex) このシーケンスのサブシーケンスである新しい文字シーケンスを返します |
37 | 文字列部分文字列(int beginIndex ) この文字列のサブ文字である新しい文字列を返します。 |
char [] toCharArray() この文字列を新しい文字配列に変換します | |
String toLowerCase() デフォルトのロケールのルールを使用するこの文字列内のすべての文字を小文字に変換します | |
String toLowerCase(Locale locale) 指定されたロケールのルールを使用して、この文字列内のすべての文字を小文字に変換します | |
42 | String toString() このオブジェクト自体を返します(すでに文字列です!) |
43 | String toUpperCase() デフォルトのロケール文字列を大文字にします(ロケール locale) |
45 String Trim() | |
46 static String valueOf(primitive data type x) | |