246 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			246 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Strings
							 | 
						|||
| 
								 | 
							
								localeTitle: 字符串
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								# 字符串
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								字符串是编程语言中的基本数据类型。字符串由`String`类型表示。字符串是不可变的。 Kotlin有一个丰富的API来处理字符串。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 基本用法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 宣言
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								// Explicit type declaration 
							 | 
						|||
| 
								 | 
							
								 var firstName : String = "Elon" 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 // or Implicit type declaration and will still compile 
							 | 
						|||
| 
								 | 
							
								 val lastName = "Musk" 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								另外,请注意`val`变量类型的用法,以下是它的行为方式
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								firstName = "Mark" // can be changed 
							 | 
						|||
| 
								 | 
							
								 lastName = "Zuckerberg" // cannot be changed 
							 | 
						|||
| 
								 | 
							
								 lastName = 12 // Error: type mismatch 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 字符串连接
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								显示在代码片段中,就像Java一样,将`Int`追加到 `String`将导致`String`输出
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "abc" + 1 
							 | 
						|||
| 
								 | 
							
								 println(str + "def") 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								abc1def 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								即使没有显式地将`Int`值1显式转换为`String`对象,结果输出仍然是`String` 。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 具有多行的字符串
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								程序员可以使用三引号而不是双引号来声明具有多行的`String`变量
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = """ 
							 | 
						|||
| 
								 | 
							
								        This is line 1 
							 | 
						|||
| 
								 | 
							
								        This is line 2 
							 | 
						|||
| 
								 | 
							
								        This is line 3 
							 | 
						|||
| 
								 | 
							
								        """ 
							 | 
						|||
| 
								 | 
							
								 println(str) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								        This is line 1 
							 | 
						|||
| 
								 | 
							
								        This is line 2 
							 | 
						|||
| 
								 | 
							
								        This is line 3 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								或者使用`.trimIndent()`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								使用`trimIndent()`还可以通过消除每行上多余的和不必要的缩进来提供干净的输出格式。检查下面的代码段:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = """ 
							 | 
						|||
| 
								 | 
							
								        This is line 1 
							 | 
						|||
| 
								 | 
							
								        This is line 2 
							 | 
						|||
| 
								 | 
							
								        This is line 3 
							 | 
						|||
| 
								 | 
							
								        """.trimIndent() 
							 | 
						|||
| 
								 | 
							
								 println(str) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								This is line 1 
							 | 
						|||
| 
								 | 
							
								 This is line 2 
							 | 
						|||
| 
								 | 
							
								 This is line 3 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 访问字符串的字符
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 索引访问
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								程序员可以使用索引访问运算符访问字符串的元素(字符):
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 println(str[2]) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								a 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								就像从数组中访问元素一样,您得到:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 println(str[9]) // Error: index out of bounds 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 通过String迭代
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								字符串的元素是可以通过索引操作访问的字符: `s[i]` 。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 for (c in str) { 
							 | 
						|||
| 
								 | 
							
								    println(c) 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								E 
							 | 
						|||
| 
								 | 
							
								 x 
							 | 
						|||
| 
								 | 
							
								 a 
							 | 
						|||
| 
								 | 
							
								 m 
							 | 
						|||
| 
								 | 
							
								 p 
							 | 
						|||
| 
								 | 
							
								 l 
							 | 
						|||
| 
								 | 
							
								 e 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 字符串的不变性
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								就像Java一样,您无法更改`String`各个元素
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 str[2] = "b" // Error 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 重新分配字符串值
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 println(str) 
							 | 
						|||
| 
								 | 
							
								 str = "Example was changed" 
							 | 
						|||
| 
								 | 
							
								 println(str) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								Example 
							 | 
						|||
| 
								 | 
							
								 Example was changed 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 字符串属性
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 确定字符串的长度
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 println(str.length) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								7 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 字符串函数
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								这些是当前Kotlin版本中可用的一些常见`String`函数
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 相比于
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								将此对象与指定的对象进行比较以获得顺序。如果此对象等于指定的其他对象,则返回零;如果小于其他对象,则返回负数;如果它大于其他对象,则返回正数。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 var str2 = "Example123" 
							 | 
						|||
| 
								 | 
							
								 var str3 = "Example12345" 
							 | 
						|||
| 
								 | 
							
								 println(str.compareTo(str2)) 
							 | 
						|||
| 
								 | 
							
								 println(str.compareTo(str3)) 
							 | 
						|||
| 
								 | 
							
								 println(str3.compareTo(str)) 
							 | 
						|||
| 
								 | 
							
								 println(str.compareTo("Example")) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								-3 
							 | 
						|||
| 
								 | 
							
								 -5 
							 | 
						|||
| 
								 | 
							
								 5 
							 | 
						|||
| 
								 | 
							
								 0 # Equal 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 等于
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								指示`String`对象是否与另一个`String`对象完全相同
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```kotlin
							 | 
						|||
| 
								 | 
							
								var str = "Example" 
							 | 
						|||
| 
								 | 
							
								 var str2 = "Example2" 
							 | 
						|||
| 
								 | 
							
								 println(str.equals("Example")) 
							 | 
						|||
| 
								 | 
							
								 println(str2.equals("Example")) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```shell
							 | 
						|||
| 
								 | 
							
								true 
							 | 
						|||
| 
								 | 
							
								 false 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 得到
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								返回此字符序列中指定索引处的字符。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\`\`\`kotlin var str =“示例” 的println(str.get(3))
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								Output: 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								贝壳 米
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								### toString 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 Returns a string representation of the object. 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								科特林 println(9.toString()+ 10) println(9 + 10)
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								Output: 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								贝壳 “910” 19 \`\`\`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 资源
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   [Kotlin基本类型](https://kotlinlang.org/docs/reference/basic-types.html)
							 | 
						|||
| 
								 | 
							
								*   [Kotlin字符串参考](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
							 |