Kotlin基础认识 (6)字符串

2019-05-23  本文已影响0人  狼性代码人

一、字符串字面量

val a = "你好。"      //  你好。      普通字符串
val b = """你\n好"""  //  你\n好     原始字符串

二、不可变字符串

  1. 定义
方式 案例
使用字符串字面量赋值 val a = "hello world"
使用转换函数 1、fun String(bytes: ByteArray, offset: Int, length: Int, charset: Charset) : String
2、fun String(chars: CharArray, offset: Int, length: Int) : String
3、fun String(stringBuilder: StringBuilder): String
  1. 字符串拼接:可以使用 ++= 运算符拼接字符串。
val a = "hello"
var b = a + " "    // "hello "
b += "world"       // "hello world"
  1. 字符串模板:字符串模板以$开头
语法
$变量或常量
${表达式} // 任何表达式,也可以是单个变量或常量
val age = 18
val s1 = "你的年龄是${age}岁。"
val now = java.util.Date()
val s2 = "今天是${now.year + 1900}年${now.month}月${now.day}日"
val s3 = """今天是:
${now.year + 1900}年
${now.month}月
${now.day}日
"""
  1. 字符串查找:String类中提供了 indexOflastIndexOf 函数用于查找字符或字符串。
fun String.indexOf(
    char: Char,                     // 要查找的字符
    startIndex: Int = 0,            // 指定查找开始的索引
    ignoreCase: Boolean = false     // 是否忽略大小写进行匹配
): Int

fun String.indexOf(
    string: String,                 // 要查找的字符串
    startIndex: Int = 0,            // 指定查找开始的索引
    ignoreCase: Boolean = false     // 是否忽略大小写进行匹配
): Int
fun String.lastIndexOf(
    char: Char,                     // 要查找的字符
    startIndex: Int = 0,            // 指定查找开始的索引
    ignoreCase: Boolean = false     // 是否忽略大小写进行匹配
): Int

fun String.lastIndexOf(
    string: String,                 // 要查找的字符串
    startIndex: Int = 0,            // 指定查找开始的索引
    ignoreCase: Boolean = false     // 是否忽略大小写进行匹配
): Int
  1. 字符串比较
fun String.compareTo(other: String, ignoreCase: Boolean = false): Int
fun String.startsWith(prefix: String, ignoreCase: Boolean = false): Boolean
fun String.endsWith(suffix: String, ignoreCase: Boolean = false): Boolean

  1. 字符串截取
fun String.substring(range: IntRange): String
fun String.substring(startIndex: Int): String
fun String.substring(startIndex: Int, endIndex: Int): String
// 案例
fun main(args: Array<String>) {
    val sourceStr = "There is a string accessing example."
    // 截取 example. 字符串
    val subStr1 = sourceStr.substring(28)      // example.
    // 截取 string 字符串
    val subStr2 = sourceStr.substring(11, 17)  // string
    // 参数是区间
    val subStr3 = sourceStr.substring(11..17)  // string
}

三、可变字符串

  1. StringBuilder
定义 描述
StringBuilder() 创建字符串内容是空的StringBuilder对象,初始容量为16个字符。
StringBuilder(seq: CharSequence) 指定CharSequence字符串创建StringBuilder对象。
StringBuilder(capacity: Int) 创建字符串内容是空的StringBuilder对象,初始容量由参数capacity指定。
StringBuilder(str: String) 指定String字符串创建StringBuilder对象。
  1. 字符串追加、插入、删除和替换
方法名 描述 返回值
append 添加 StringBuilder
insert 插入 StringBuilder
delete 删除 StringBuilder
replace 替换 StringBuilder

四、正则表达式

  1. 创建 Regex 对象
方式 描述
通过构造函数创建 默认构造函数 Regex(pattern: String),其中 pattern 是正则表达式模式字符串。
使用 toRegex() 扩展函数 String 提供扩展函数 toRegex() 返回 Regex 对象。
fun main(args: Array<String>) {
    val pattern = """\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}"""
    val string = "kotlin@sina.com"
    // val regex = Regex(pattern)  // 通过构造函数创建
    val regex = pattern.toRegex()  // 使用 toRegex() 扩展函数
    
    println(regex.matches(string))  // true
}
  1. 字符串匹配
方法 描述
matches(input: CharSequence): Boolean 精确匹配函数,测试输入字符串是否完全匹配正则表达式模式。
containsMatchIn(input: CharSequence): Boolean 包含匹配函数,测试输入字符串是否部分匹配正则表达式模式。
fun main(args: Array<String>) {
    // 全部是数字模式
    val regex = Regex("""\d+""")

    val input1 = "1000"
    val input2 = "¥1000"

    println(regex.matches(input1))  // true
    println(regex.matches(input2))  // false

    println(regex.containsMatchIn(input1))  // true
    println(regex.containsMatchIn(input2))  // true
}
  1. 字符串查找
方法 描述
find(input: CharSequence, startIndex: Int): MatchResult? 查找第一个匹配模式的字符串,返回MatchResult?类型。
finaAll(input: CharSequence, startIndex: Int): Sequence 查找所有匹配模式的字符串,返回Sequence类型,Sequence是可进行迭代集合的类型,其中放置的元素是MatchResult类型。
fun main(args: Array<String>) {
    val string = "AB12CD34EF"
    val regex = Regex("""\d+""")
    val result = regex.find(string)
    
    println("第一个匹配字符串:${result?.value}")
    regex.findAll(string).forEach { item -> 
        println(item.value)
    }
}
// 输入结果
// 第一个匹配字符串:12
// 12
// 34
  1. 字符串替换
方法 描述
replace(input: CharSequence, replacement: String): String input参数是输入字符串,replacement参数是要替换的新字符串,返回值返回替换之后的字符串。
fun main(args: Array<String>) {
    val string = "AB12CD34EF"
    val regex = Regex("""\d+""")
    val result = regex.replace(string, " ")

    println(result) // AB CD EF
}
  1. 字符串分割
方法 描述
split(input: CharSequence, limit: Int): List input参数是输入字符串,limit是分割字符串的最大个数,如果为0表示没有限制,返回值是List字符串集合。
fun main(args: Array<String>) {
    
    val string = "AB12CD34EF"
    
    val regex = Regex("""\d+""")
    
    val result = regex.split(string)

    println(result) // [AB, CD, EF]
    
}
上一篇 下一篇

猜你喜欢

热点阅读