Учебники

Скала — Струны

В этой главе рассказывается о Scala. В Scala, как и в Java, строка является неизменным объектом, то есть объектом, который нельзя изменить. С другой стороны, объекты, которые могут быть изменены, например, массивы, называются изменяемыми объектами. Строки являются очень полезными объектами, в оставшейся части этого раздела мы представляем важные методы класса java.lang.String .

Создание строки

Следующий код может быть использован для создания строки —

var greeting = "Hello world!";

or

var greeting:String = "Hello world!";

Всякий раз, когда компилятор встречает строковый литерал в коде, он создает объект String со своим значением, в данном случае «Hello world!». Строковое ключевое слово также может быть указано в альтернативном объявлении, как показано выше.

Попробуйте следующий пример программы.

пример

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

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

Сохраните вышеуказанную программу в Demo.scala . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>scala Demo

Выход

Hello, world!

Как упоминалось ранее, класс String является неизменным. Созданный строковый объект не может быть изменен. Если необходимо внести множество изменений в строки символов, используйте класс String Builder, доступный в Scala !.

Длина строки

Методы, используемые для получения информации об объекте, называются методами доступа. Одним из методов доступа, который можно использовать со строками, является метод length (), который возвращает количество символов, содержащихся в строковом объекте.

Используйте следующий сегмент кода, чтобы найти длину строки —

пример

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 . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>scala Demo

Выход

String Length is : 17

Конкатенация строк

Класс String включает метод для объединения двух строк:

string1.concat(string2);

Это возвращает новую строку, которая является строкой1 с добавленной строкой2 в конце. Вы также можете использовать метод concat () со строковыми литералами, как в —

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

Строки чаще объединяются с помощью оператора +, как в —

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

Что приводит к —

"Hello, world!"

Следующие строки кода, чтобы найти длину строки.

пример

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

Сохраните вышеуказанную программу в Demo.scala . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>scala Demo

Выход

Dot Dot saw I was Tod

Создание форматных строк

У вас есть методы printf () и format () для печати вывода с отформатированными числами. Класс 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 . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>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!()

Строковая интерполяция

Интерполяция строк — это новый способ создания строк на языке программирования Scala. Эта функция поддерживает версии Scala-2.10 и выше. Строковая интерполяция: механизм для встраивания ссылок на переменные непосредственно в строковый литерал процесса.

В String Interpolation есть три типа (интерполяторы) реализаций.

Строковый интерполятор

Литерал ‘s’ позволяет использовать переменную непосредственно при обработке строки, когда вы добавляете ‘s’ к ней. Любая строковая переменная в области видимости, которая может быть использована в строковой переменной. Ниже приведены различные варианты использования строкового интерполятора.

В следующем примере фрагмента кода для реализации интерполятора ‘s’ при добавлении переменной String ($ name) к обычной строке (Hello) в операторе println.

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

Строковый интерполятор также может обрабатывать произвольные выражения. Следующий фрагмент кода для обработки строки (1 + 1) с произвольным выражением ($ {1 + 1}) с использованием интерполятора строки ‘s’. Любое произвольное выражение может быть встроено в ‘$ {}’.

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

Попробуйте следующий пример программы реализации интерполятора ‘s’.

пример

object Demo {
   def main(args: Array[String]) {
      val name = "James"
      
      println(s"Hello, $name")
      println(s"1 + 1 = ${1 + 1}")
   }
}

Сохраните вышеуказанную программу в Demo.scala . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>scala Demo

Выход

Hello, James
1 + 1 = 2

Интерполятор ‘f’

Буквенный интерполятор ‘f’ позволяет создавать форматированную строку, аналогичную printf на языке Си. При использовании интерполятора ‘f’ все ссылки на переменные должны сопровождаться спецификаторами формата стиля printf , такими как% d,% i,% f и т. Д.

Давайте рассмотрим пример добавления значения с плавающей запятой (высота = 1,9d) и строковой переменной (имя = «Джеймс») с нормальной строкой. Следующий фрагмент кода реализации интерполятора ‘f’. Здесь $ name% s для печати (строковая переменная) 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’ использует утилиты формата String (спецификаторы формата), доступные в Java. По умолчанию означает, что после ссылки на переменную нет символа%. Предполагается, что% s (String).

«сырой» интерполятор

«Необработанный» интерполятор похож на «s» -интерполятор за исключением того, что он не выполняет экранирование литералов внутри строки. Следующие фрагменты кода в таблице будут отличаться использованием интерполяторов ‘s’ и ‘raw’. В выходных данных ‘s’ использование ‘\ n’ влияет как новая строка, а в выходных данных ‘raw’ использование ‘\ n’ не будет действовать. Он напечатает всю строку с escape-буквами.

‘s’ использование интерполятора использование «сырых» интерполяторов

Программа

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

Программа

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

Выход

Result =
a
b

Выход

Result = \n a \n b

Программа

Программа

Выход

Выход

Строковые Методы

Ниже приведен список методов, определенных классом java.lang.String, которые можно использовать непосредственно в ваших программах Scala.

char charAt (int index)

Возвращает символ по указанному индексу.

int CompareTo (Объект o)

Сравнивает эту строку с другим объектом.

int compareTo (String anotherString)

Сравнивает две строки лексикографически.

int compareToIgnoreCase (String str)

Сравнивает две строки лексикографически, игнорируя различия в регистре.

Строка Конкат (String str)

Объединяет указанную строку до конца этой строки.

логическое contentEquals (StringBuffer sb)

Возвращает true тогда и только тогда, когда эта String представляет ту же последовательность символов, что и указанный StringBuffer.

static String copyValueOf (char [] data)

Возвращает строку, представляющую последовательность символов в указанном массиве.

static String copyValueOf (данные char [], смещение int, число int)

Возвращает строку, представляющую последовательность символов в указанном массиве.

логическое заканчивается с (суффикс строки)

Проверяет, заканчивается ли эта строка указанным суффиксом.

логическое равенство (Object anObject)

Сравнивает эту строку с указанным объектом.

логическое equalsIgnoreCase (String anotherString)

Сравнивает эту строку с другой строкой, игнорируя соображения регистра.

byte getBytes ()

Кодирует эту строку в последовательность байтов, используя кодировку платформы по умолчанию, сохраняя результат в новом байтовом массиве.

byte [] getBytes (String charsetName)

Кодирует эту строку в последовательность байтов, используя именованную кодировку, сохраняя результат в новом байтовом массиве.

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

Копирует символы из этой строки в массив символов назначения.

int hashCode ()

Возвращает хеш-код для этой строки.

int indexOf (int ch)

Возвращает индекс в этой строке первого вхождения указанного символа.

int indexOf (int ch, int fromIndex)

Возвращает индекс в этой строке первого вхождения указанного символа, начиная поиск по указанному индексу.

int indexOf (String str)

Возвращает индекс в этой строке первого вхождения указанной подстроки.

int indexOf (String str, int fromIndex)

Возвращает индекс в этой строке первого вхождения указанной подстроки, начиная с указанного индекса.

Строка интерна ()

Возвращает каноническое представление для строкового объекта.

int lastIndexOf (int ch)

Возвращает индекс в этой строке последнего вхождения указанного символа.

int lastIndexOf (int ch, int fromIndex)

Возвращает индекс в этой строке последнего вхождения указанного символа с поиском в обратном направлении, начиная с указанного индекса.

int lastIndexOf (String str)

Возвращает индекс в этой строке самого правого вхождения указанной подстроки.

int lastIndexOf (String str, int fromIndex)

Возвращает индекс в этой строке последнего вхождения указанной подстроки с обратным поиском, начиная с указанного индекса.

int length ()

Возвращает длину этой строки.

булевы совпадения (строковое регулярное выражение)

Сообщает, соответствует ли эта строка заданному регулярному выражению.

логическое regionMatches (логическое ignoreCase, int toffset, String other, int offset, int len)

Проверяет, равны ли две строковые области.

логическое regionMatches (int toffset, String other, int offset, int len)

Проверяет, равны ли две строковые области.

Замена строки (char oldChar , char newChar)

Возвращает новую строку, полученную в результате замены всех вхождений oldChar в этой строке на newChar.

String replaceAll (регулярное выражение строки, замена строки

Заменяет каждую подстроку этой строки, которая соответствует данному регулярному выражению с данной заменой.

String replaceFirst (регулярное выражение строки, замена строки)

Заменяет первую подстроку этой строки, которая соответствует заданному регулярному выражению с заданной заменой.

String [] split (регулярное выражение строки)

Разбивает эту строку вокруг совпадений заданного регулярного выражения.

String [] split (регулярное выражение String, ограничение int)

Разбивает эту строку вокруг совпадений заданного регулярного выражения.

логическое начальное с (строковый префикс)

Проверяет, начинается ли эта строка с указанного префикса.

логическое начальное с (строковый префикс, int toffset)

Проверяет, начинается ли эта строка с указанного префикса, начиная с указанного индекса.

Подпоследовательность CharSequence (int beginIndex, int endIndex)

Возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности.

Строковая подстрока (int beginIndex)

Возвращает новую строку, которая является подстрокой этой строки.

Строковая подстрока (int beginIndex, int endIndex)

Возвращает новую строку, которая является подстрокой этой строки.

char [] toCharArray ()

Преобразует эту строку в новый массив символов.

Строка toLowerCase ()

Преобразует все символы в этой строке в нижний регистр, используя правила локали по умолчанию.

String toLowerCase (языковой стандарт)

Преобразует все символы в этой строке в нижний регистр, используя правила данной локали.

Строка toString ()

Этот объект (который уже является строкой!) Сам по себе возвращается.

Строка toUpperCase ()

Преобразует все символы в этой строке в верхний регистр, используя правила локали по умолчанию.

String toUpperCase (языковой стандарт)

Преобразует все символы в этой строке в верхний регистр, используя правила данной локали.

Струнная отделка ()

Возвращает копию строки, пропуская начальные и конечные пробелы.

static String valueOf (примитивный тип данных x)

Возвращает строковое представление переданного аргумента типа данных.