Scala String
В следующем примере строка присваивается константе:
Пример
val greeting: String = "Hello,World!"
def main(args: Array[String]) {
println( greeting )
}
}
В приведенном выше примере определяется переменная greeting, которая является строковой константой. Ее тип —String (java.lang.String)。
В Scala тип строки фактически является Java String, и в самой Scala нет класса String.
В Scala String — это неизменяемый объект, поэтому этот объект нельзя изменить. Это означает, что если вы измените строку, будет создан новый строковый объект.
Но другие объекты, такие как массивы, являются изменяемыми объектами. Далее мы рассмотрим часто используемые методы java.lang.String.
Создание строк
Вот пример создания строки:
val greeting = "Hello World!"; или val greeting:String = "Hello World!";
Вам не обязательно указывать тип String для строки, потому что компилятор Scala автоматически выведет, что тип строки — String.
Конечно, мы также можем явно объявить строку как тип String, как в следующем примере:
Пример
val greeting: String = "Hello, World!"
def main(args: Array[String]) {
println( greeting )
}
}
Выполните приведённый выше код, и результат вывода будет:
$ scalac Test.scala $ scala Test Hello, world!
Ранее мы упоминали, что объекты String неизменяемы. Если вам нужно создать изменяемую строку, вы можете использовать класс StringBuilder, как в следующем примере:
Пример
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
Длина String
Мы можем использовать метод length() для получения длины строки:
Пример
def main(args: Array[String]) {
var palindrome = "www.example.com";
var len = palindrome.length();
println( "Длина строки: " + len );
}
}
Выполните приведённый выше код, и результат вывода будет:
$ scalac Test.scala $ scala Test String Length is : 14
Конкатенация строк
В классе String используйте метод concat() для объединения двух строк:
string1.concat(string2);
Демонстрация примера:
scala> "Example官网: ".concat("www.example.com");
res0: String = Example官网: www.example.com
Аналогично можно также использовать знак плюс (+) для объединения:
scala> "Example官网: " + " www.example.com" res1: String = Example官网: www.example.com
Давайте рассмотрим полный пример:
Пример
def main(args: Array[String]) {
var str1 = "Официальный сайт Example:";
var str2 = "www.example.com";
var str3 = "Слоган Example:";
var str4 = "То, что вы изучаете, — это не только технологии, но и мечта!";
println( str1 + str2 );
println( str3.concat(str4) );
}
}
Выполните приведённый выше код, и результат вывода будет:
$ scalac Test.scala $ scala Test Example官网:www.example.com Example的 Slogan 为:学的不仅是技术,更是梦想!
Создание строк формата
В классе String можно использовать метод printf() для форматирования и вывода строки. Метод format() класса String может возвращать объект String вместо объекта PrintStream. В следующем примере демонстрируется использование метода printf():
Пример
def main(args: Array[String]) {
var floatVar = 12.456
var intVar = 2000
var stringVar = "Example!"
var fs = printf("Переменная с плавающей запятой равна " +
"%f, целочисленная переменная равна %d, строка равна " +
" %s", floatVar, intVar, stringVar)
println(fs)
}
}
Выполните приведённый выше код, и результат вывода будет:
$ scalac Test.scala $ scala Test 浮点型变量为 12.456000, 整型变量为 2000, 字符串为 Example!()
Методы 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) Возвращает новую строку, полученную в результате замены всех вхождений oldChar в этой строке на newChar |
| 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() Преобразует эту строку в новый массив символов |
| 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) Возвращает строковое представление указанного аргумента типа |