Scala---字符串

来源:互联网 发布:sas数据分析大赛客观题 编辑:程序博客网 时间:2024/06/13 10:20

来源:http://www.yiibai.com/scala/scala_strings.html


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!";orvar greeting:String = "Hello world!";

每当遇到一个字符串在代码中,编译器创建String对象及其值,在这个示例中使用:“Hello world!”,但如果你喜欢,可以给字符串,因为这里我已经在声明中交替显示。

object Test {   val greeting: String = "Hello, world!"   def main(args: Array[String]) {      println( greeting )   }}

让我们编译和运行上面的程序,这将产生以下结果:

C:/>scalac Test.scalaC:/>scala TestHello, 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.scalaC:/>scala TestString Length is : 17C:/>

连接字符串:

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.scalaC:/>scala TestDot Dot saw I was TodC:/>

创建格式化字符串:

已经有两个方法: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.scalaC:/>scala TestThe 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方法及描述1char charAt(int index) 
返回指定索引处的字符2int compareTo(Object o) 
该字符串与另一个对象比较3int compareTo(String anotherString)
按字典顺序比较两个字符串4int compareToIgnoreCase(String str) 
比较两个字符串字典顺序,忽略大小写差异5String concat(String str)
将指定字符串添加这个字符串的结尾处6boolean contentEquals(StringBuffer sb) 
返回true当且仅当此String表示的字符与指定的StringBuffer相同的序列7static String copyValueOf(char[] data) 
返回表示所指定的数组中的字符序列的字符串8static String copyValueOf(char[] data, int offset, int count)
返回表示所指定的数组中的字符序列的字符串。9boolean endsWith(String suffix) 
测试此字符串是否以指定的后缀结束。10boolean equals(Object anObject)
比较该字符串和指定的对象。11boolean equalsIgnoreCase(String anotherString)
比较该字符串到另一个字符串,不考虑大小写。12byte getBytes() 
将此String解码使用平台的默认字符集的字节序列,并将结果存储到一个新的字节数组。13byte[] getBytes(String charsetName
将此String解码使用指定的字符集的字节序列,并将结果存储到一个新的字节数组。14void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
复制字符从这个字符串到目标字符数组。15int hashCode()
返回此字符串的哈希码。16int indexOf(int ch) 
返回此字符串指定字符第一次出现处的索引。17int indexOf(int ch, int fromIndex) 
返回此字符串指定的字符,开始搜索指定索引处的第一次出现处的索引。18int indexOf(String str)
返回此字符串的指定子第一次出现处的索引。19int indexOf(String str, int fromIndex)
返回此字符串中第一次出现的指定子字符串,开始在指定的索引处的索引。20String intern()
返回字符串对象的规范表示。21int lastIndexOf(int ch) 
返回此字符串指定字符最后一次出现处的索引。22int lastIndexOf(int ch, int fromIndex) 
返回此字符串指定字符最后一次出现处的索引,搜索开始向后指定索引处。23int lastIndexOf(String str)
返回此字符串指定子的最右边出现处的索引。24int lastIndexOf(String str, int fromIndex) 
返回此字符串的指定子最后一次出现处的索引,搜索开始向后指定索引处。25int length() 
返回此字符串的长度。26boolean matches(String regex)
判断此字符串是否与给正则表达式匹配。27boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 
测试两个字符串区域是否相等。28boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。29String replace(char oldChar, char newChar)
返回通过用newChar更换oldChar中出现的所有该字符串产生一个新的字符串。30String replaceAll(String regex, String replacement
替换此字符串匹配给定的正则表达式以给定替换的每个子字符串。31String replaceFirst(String regex, String replacement) 
替换此字符串匹配给定的正则表达式以给定替换的第一子字符串。32String[] split(String regex) 
来此字符串围绕拆分给定的正则表达式的匹配。33String[] split(String regex, int limit) 
围绕拆分给定的正则表达式的匹配来此字符串。34boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。35boolean startsWith(String prefix, int toffset)
测试这个字符串开头是否以指定索引指定的前缀开始。36CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的子序列。37String substring(int beginIndex)
返回一个新字符串,它是此字符串的一个子字符串。38String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。39char[] toCharArray() 
这个字符串到一个新的字符数组转换。40String toLowerCase()
将所有在这个字符串的字符使用默认语言环境的规则转换为小写。41String toLowerCase(Locale locale)
将所有在此字符串中的字符使用给定Locale的规则转换为小写。42String toString()
这个对象(这已经是一个字符串!)本身被返回。43String toUpperCase() 
将所有的字符在这个字符串使用默认语言环境的规则转换为大写。44String toUpperCase(Locale locale) 
将所有的字符在这个字符串使用给定的Locale规则转换为大写。45String trim() 
返回字符串的副本,以开头和结尾的空白忽略。46static String valueOf(primitive data type x) 
返回传递的数据类型参数的字符串表示。




原创粉丝点击