当前位置: 首页 > news >正文

Kotlin 字符串与空值判断

let

let 常配合判空符号 ? 进行使用

let 的作用是当当前值为 null 是应该额外做的有些事情;

譬如下方代码,检测输入字符如果为空就以 name 替换,如果非空那就打印 get

val str = readLine()?.let {
    if(it.isNotBlank()){
        println("get")
    }else{
        "name"
    }
}

非空断言运算符

双感叹号,表示目前的值绝对不可能为 null,如果真的是 null 那就抛出异常

val getStr = readLine()!!

空合并运算符

运算符为 ?:

表示如果该符号左侧如果非空那么就赋值为左侧,如果为空就以右侧值替代之

var s = readLine()
s = s?.toString() ?: "name"

trycatch

一个正常的抛出检测异常的代码块

var number: Int? = null
try {
    number!!.plus(123)
}catch (e:Exception){
    e.printStackTrace()
}

until

until 用来表示一个范围

下方代码表示的是 0<=x<index

val index = NAME.indexOf('\'')
var str = NAME.substring(0 until index)

split

可以配合解构赋值来使用

val s = "hi,jack,it"
val (s1: String, s2: String, s3: String) = s.split(',')

replace

可以传入一个正则表达式,并对正则能匹配到的所有字符都进行一对一的替换!

val st = "change this name"
val cg = st.replace(Regex("[th]")){
    when(it.value){
        "t"->"k"
        "h"->"L"
        else->it.value
    }
}

相等检查

== 检查两个值是否一致;

=== 检查两个变量的引用是否一致;


遍历字符串

下方代码表示遍历整个字符串并打印每一个字符

val str = "the"
str.forEach {
    println(it)
}

无法强转

注意,java 中可以将 int 隐式升级为 long,但是 kotlin 必须显式指定,否则报错;

使用特定函数进行类型转换

val num:Int = "9.4123".toInt()

相关文章:

  • 【NLP开发】Python实现聊天机器人(ALICE)
  • 【题解】同济线代习题二 8.1
  • 【C语言】五分钟彻底搞定字符串
  • 【极客日常】PyQt5的QListView兼容左键双击事件和右键上下文菜单的方法
  • 基于遗传优化算法的小车障碍物避障路线规划matlab仿真(包括matlab仿真录像)
  • vue后台系统管理项目-openlayers地图定位、港口数据标记功能
  • 通讯录的文件版本(产品经理又来加需求了!)
  • 基于Java+SpringBoot+Thymeleaf+Mysql医院预约挂号系统设计与实现
  • 计算机网络-网络层篇-IP协议
  • ASP.NET MVC--过滤器
  • 【C语言】手把手带你写第一个C语言程序
  • Java学习笔记:爬虫-操作动态网页的Selenium
  • 人工智能教育协会—迎国庆程序设计比赛 题解
  • Less预处理——混合方法
  • 反绎学习简介
  • jQuery(一)
  • JS数组方法汇总
  • React-Native - 收藏集 - 掘金
  • socket.io+express实现聊天室的思考(三)
  • SQLServer之创建显式事务
  • vue:响应原理
  • 阿里研究院入选中国企业智库系统影响力榜
  • 闭包--闭包作用之保存(一)
  • 基于遗传算法的优化问题求解
  • 记一次用 NodeJs 实现模拟登录的思路
  • 坑!为什么View.startAnimation不起作用?
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 微信开源mars源码分析1—上层samples分析
  • 与 ConTeXt MkIV 官方文档的接驳
  • Linux权限管理(week1_day5)--技术流ken
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​比特币大跌的 2 个原因
  • #Spring-boot高级
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C++20) consteval立即函数
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)nsfocus-绿盟科技笔试题目
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调