Scala字符串
考虑下面这个简单的例子,我们给一个字符串类型的 val 变量:
object Test { val greeting: String = "Hello, world!" def main(args: Array[String]) { println( greeting ) } }
在这里,上面的值类型是从Java的java.lang.String借来的,因为Scala的字符串也是Java字符串。这一点是非常好的,要注意:每一个Java类可用在Scala中。因此,Scala没有String类并直接利用Java字符串String类。因此,这一章已被写入保持Java String的基础。
在Scala中与在Java中一样,一个字符串是不可变的对象,也就是,这是不能被修改的对象。另一方面,对象是可以修改的,如数组对象,被称为可变对象。由于字符串是非常有用的对象,在本节的其余部分,我们目前最重要了解类java.lang.String的方法定义。
创建字符串:
最直接的方法来创建一个字符串的编写方法是:
var greeting = "Hello world!"; or var greeting:String = "Hello world!";
每当遇到一个字符串在代码中,编译器创建String对象及其值,在这个示例中使用:“Hello world!”,但如果你喜欢,可以给字符串,因为这里我已经在声明中交替显示。
object Test { val greeting: String = "Hello, world!" def main(args: Array[String]) { println( greeting ) } }
让我们编译和运行上面的程序,这将产生以下结果:
C:/>scalac Test.scala C:/>scala Test Hello, world! C:/>
正如前面提到的,String类是不可变的,所以一旦它被创建,String 对象不能改变。如果需要做大量修改字符的字符串,那么应该使用在Scala提供字符串构建器类( String Builder )。
字符串长度:
用于获得关于对象的信息的方法是已知的存取方法。可以使用字符串使用一个存取方法是length()方法,它返回包含在字符串对象中的字符数。
下面两行代码被执行之后,len 等于17:
object Test { def main(args: Array[String]) { var palindrome = "Dot saw I was Tod"; var len = palindrome.length(); println( "String Length is : " + len ); } }
让我们编译和运行上面的程序,这将产生以下结果:
C:/>scalac Test.scala C:/>scala Test String Length is : 17 C:/>
连接字符串:
String类包括用于连接两个字符串的方法:
string1.concat(string2);
这返回一个string1将string2添加到它的末尾的一个新字符串。也可以使用concat()方法用字符串,如:
"My name is ".concat("Zara");
字符串比较常用连接在一起,使用+运算符,如:
"Hello," + " world" + "!"
这将产生:
"Hello, world!"
让我们来看看下面的例子:
object Test { def main(args: Array[String]) { var str1 = "Dot saw I was "; var str2 = "Tod"; println("Dot " + str1 + str2); } }
让我们编译和运行上面的程序,这将产生以下结果:
C:/>scalac Test.scala C:/>scala Test Dot Dot saw I was Tod C:/>
创建格式化字符串:
已经有两个方法:printf()和format()方法使用格式化数字打印输出。 String类有一个等价类的方法,format(),它返回一个String对象,而不是一个PrintStream对象。让我们看看下面的例子,这是使用printf()方法:
object Test { 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) } }
让我们编译和运行上面的程序,这将产生以下结果:
C:/>scalac Test.scala C:/>scala Test The value of the float variable is 12.456000, while the value of the integer var iable is 2000, and the string is Hello, Scala!() C:/>
字符串的方法:
以下是由java.lang.String类中定义,并且可以直接在Scala程序中使用方法列表:
SN | 方法及描述 |
---|---|
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) 返回true当且仅当此String表示的字符与指定的StringBuffer相同的序列 |
7 |
static String copyValueOf(char[] data) 返回表示所指定的数组中的字符序列的字符串 |
8 |
static String copyValueOf(char[] data, int offset, int count) 返回表示所指定的数组中的字符序列的字符串。 |
9 |
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 |
10 |
boolean equals(Object anObject) 比较该字符串和指定的对象。 |
11 |
boolean equalsIgnoreCase(String anotherString) 比较该字符串到另一个字符串,不考虑大小写。 |
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) 返回通过用newChar更换oldChar中出现的所有该字符串产生一个新的字符串。 |
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() 将所有在这个字符串的字符使用默认语言环境的规则转换为小写。 |
41 |
String toLowerCase(Locale locale) 将所有在此字符串中的字符使用给定Locale的规则转换为小写。 |
42 |
String toString() 这个对象(这已经是一个字符串!)本身被返回。 |
43 |
String toUpperCase() 将所有的字符在这个字符串使用默认语言环境的规则转换为大写。 |
44 |
String toUpperCase(Locale locale) 将所有的字符在这个字符串使用给定的Locale规则转换为大写。 |
45 |
String trim() 返回字符串的副本,以开头和结尾的空白忽略。 |
46 |
static String valueOf(primitive data type x) 返回传递的数据类型参数的字符串表示。 |
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:Scala字符串
本文地址:http://www.codeinn.net/scala/1212.html