📅  最后修改于: 2020-11-02 04:46:21             🧑  作者: Mango
本章将带您了解Scala字符串。与Java中一样,在Scala中,字符串是不可变的对象,即无法修改的对象。另一方面,可以修改的对象(例如数组)称为可变对象。字符串是非常有用的对象,在本节的其余部分中,我们介绍java.lang.String类的重要方法。
以下代码可用于创建字符串-
var greeting = "Hello world!";
or
var greeting:String = "Hello world!";
每当编译器在代码中遇到字符串字面量,编译器都会使用其值(在本例中为“ Hello world!”)创建一个String对象。字符串关键字也可以在替代声明中给出,如上所示。
请尝试以下示例程序。
object Demo {
val greeting: String = "Hello, world!"
def main(args: Array[String]) {
println( greeting )
}
}
将以上程序保存在Demo.scala中。以下命令用于编译和执行该程序。
\>scalac Demo.scala
\>scala Demo
Hello, world!
如前所述,String类是不可变的。字符串对象一旦创建就无法更改。如果有必要做出了很多修改的字符的字符串,然后使用字符串构建类提供斯卡拉!
用于获取有关对象的信息的方法称为访问器方法。可以与字符串一起使用的一种访问器方法是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);
这将返回一个新的字符串,该字符串为string1,最后添加了string2。您还可以将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及更高版本。字符串插值:将变量引用直接嵌入过程字符串字面量。
字符串插值中有三种实现类型(插值器)。
字面量“ s”允许在将“ s”添加到字符串直接在处理字符串时使用变量。具有可以在String中使用的作用域的任何String变量。以下是’s’字符串插值器的不同用法。
以下示例代码片段用于在将字符串变量($ name)附加到println语句中的普通字符串(Hello)时,实现’s’插值器。
val name = “James”
println(s “Hello, $name”) //output: Hello, James
字符串插值器也可以处理任意表达式。以下代码段用于使用’s’字符串插值器处理具有任意表达式($ {1 + 1})的字符串(1 + 1)。任何任意表达式都可以嵌入到’$ {}’中。
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”插补器允许创建格式化的字符串,类似于C语言中的printf。使用’f’插值器时,所有变量引用后均应带有printf样式格式说明符,例如%d,%i,%f等。
让我们举一个示例,将浮点值(高度= 1.9d)和字符串变量(名称=“ James”)附加到普通字符串。以下实现“ 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’插值器利用Java中可用的String格式实用程序(格式说明符)。默认情况下,变量引用后没有%字符。它将假定为%s(字符串)。
‘原始’插值器与”插值器类似,不同之处在于它不对字符串内的字面量进行转义。下表中的以下代码片段将不同“ s”和“ raw”插值器的用法。在’s’用法的输出中,\ n作为新行起作用,而在’raw’用法的输出中,’\ n’不起作用。它将打印带有转义字母的完整字符串。
‘s’ interpolator usage | ‘raw’ interpolator usage |
---|---|
Program − object Demo { def main(args: Array[String]) { println(s"Result = \n a \n b") } } |
Program − object Demo { def main(args: Array[String]) { println(raw"Result = \n a \n b") } } |
Output − Result = a b |
Output − Result = \n a \n b |
以下是java.lang.String类定义的方法列表,可以在您的Scala程序中直接使用-
Sr.No | Methods with Description |
---|---|
1 |
char charAt(int index) Returns the character at the specified index. |
2 |
int compareTo(Object o) Compares this String to another Object. |
3 |
int compareTo(String anotherString) Compares two strings lexicographically. |
4 |
int compareToIgnoreCase(String str) Compares two strings lexicographically, ignoring case differences. |
5 |
String concat(String str) Concatenates the specified string to the end of this string. |
6 |
boolean contentEquals(StringBuffer sb) Returns true if and only if this String represents the same sequence of characters as the specified StringBuffer. |
7 |
static String copyValueOf(char[] data) Returns a String that represents the character sequence in the array specified. |
8 |
static String copyValueOf(char[] data, int offset, int count) Returns a String that represents the character sequence in the array specified. |
9 |
boolean endsWith(String suffix) Tests if this string ends with the specified suffix. |
10 |
boolean equals(Object anObject) Compares this string to the specified object. |
11 |
boolean equalsIgnoreCase(String anotherString) Compares this String to another String, ignoring case considerations. |
12 |
byte getBytes() Encodes this String into a sequence of bytes using the platform’s default charset, storing the result into a new byte array. |
13 |
byte[] getBytes(String charsetName) Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array. |
14 |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Copies characters from this string into the destination character array. |
15 |
int hashCode() Returns a hash code for this string. |
16 |
int indexOf(int ch) Returns the index within this string of the first occurrence of the specified character. |
17 |
int indexOf(int ch, int fromIndex) Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index. |
18 |
int indexOf(String str) Returns the index within this string of the first occurrence of the specified substring. |
19 |
int indexOf(String str, int fromIndex) Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. |
20 |
String intern() Returns a canonical representation for the string object. |
21 |
int lastIndexOf(int ch) Returns the index within this string of the last occurrence of the specified character. |
22 |
int lastIndexOf(int ch, int fromIndex) Returns the index within this string of the last occurrence of the specified character, searching backward starting at the specified index. |
23 |
int lastIndexOf(String str) Returns the index within this string of the rightmost occurrence of the specified substring. |
24 |
int lastIndexOf(String str, int fromIndex) Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index. |
25 |
int length() Returns the length of this string. |
26 |
boolean matches(String regex) Tells whether or not this string matches the given regular expression. |
27 |
boolean regionMatches(boolean ignoreCase, int toffset, String other, int offset, int len) Tests if two string regions are equal. |
28 |
boolean regionMatches(int toffset, String other, int offset, int len) Tests if two string regions are equal. |
29 |
String replace(char oldChar, char newChar) Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar. |
30 |
String replaceAll(String regex, String replacement Replaces each substring of this string that matches the given regular expression with the given replacement. |
31 |
String replaceFirst(String regex, String replacement) Replaces the first substring of this string that matches the given regular expression with the given replacement. |
32 |
String[] split(String regex) Splits this string around matches of the given regular expression. |
33 |
String[] split(String regex, int limit) Splits this string around matches of the given regular expression. |
34 |
boolean startsWith(String prefix) Tests if this string starts with the specified prefix. |
35 |
boolean startsWith(String prefix, int toffset) Tests if this string starts with the specified prefix beginning a specified index. |
36 |
CharSequence subSequence(int beginIndex, int endIndex) Returns a new character sequence that is a subsequence of this sequence. |
37 |
String substring(int beginIndex) Returns a new string that is a substring of this string. |
38 |
String substring(int beginIndex, int endIndex) Returns a new string that is a substring of this string. |
39 |
char[] toCharArray() Converts this string to a new character array. |
40 |
String toLowerCase() Converts all of the characters in this String to lower case using the rules of the default locale. |
41 |
String toLowerCase(Locale locale) Converts all of the characters in this String to lower case using the rules of the given Locale. |
42 |
String toString() This object (which is already a string!) is itself returned. |
43 |
String toUpperCase() Converts all of the characters in this String to upper case using the rules of the default locale. |
44 |
String toUpperCase(Locale locale) Converts all of the characters in this String to upper case using the rules of the given Locale. |
45 |
String trim() Returns a copy of the string, with leading and trailing whitespace omitted. |
46 |
static String valueOf(primitive data type x) Returns the string representation of the passed data type argument. |