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

如何在kotlin中给空字符串(””)和null值设置默认值问题?

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

在开发过程中经常遇到空值导致的 Crash 问题,要是能给变量设置默认值将会避免很多的麻烦。我将介绍在Android开发中遇到的nul值和空字符串问题。

假如我们有一个dialog 界面,其中1和2 是需要设置默认值的地方,因为如果为空则会出现崩溃问题。
在这里插入图片描述

val UrlName = dialog.findViewById<EditText>(R.id.name)
val resolutionButton = dialog.findViewById<EditText>(R.id.resolution)

像上述控件中由用户所输入的内容,默认为字符串类型,当用户在UrlName位置没有输入内容时,则默认值为空字符串””,而不是 nul。接下来获取UrlName位置的数据,如果为“”的话,则设置默认值为test

val inputName = if(UrlName.text.isNullOrBlank()){"test"}else{UrlName.text}

使用 isNullOrBlank() 函数来检查字符串是否为 null 或空字符串。如果 UrlName.textnull 或空字符串,inputName 将被赋值为 “test”,否则将使用 UrlName.text 的值。

如果 UrlName.textnull,在 Kotlin 中使用 Elvis 操作符 ?:

val inputName = UrlName.text ?: "test"

在 Kotlin 中使用 Elvis 操作符 ?: 时,空字符串被视为非空值,不会被视为 null。因此,如果 UrlName.text 是空字符串,inputName 将被赋值为空字符串而不是备用值 “test”。即只有当 UrlNameUrlName.textnull 时,Elvis 操作符 ?: 才会返回备用值。

resolutionButton位置的数据获取,可以直接使用 Elvis 操作符 ?:,如下所示。

var inputText = resolutionButton.text.toString().toIntOrNull()?:720

如果说你不太确实是空字符串还是null,可以直接使用isNullOrBlank()。当然也可以分开写代码,一步步排查。

 val textValue = UrlName?.textval inputName = textValue ?: "test"

总之,当需要处理空值时,可以使用 toIntOrNull(),另外多了解一些 Elvis 操作符 ?: 在日常开发中真的很有用。

最近在阅读《如何阅读“奇特的一生”》,书籍中讲的时间统计法真的很有用,非常推荐给大家。

压力往往是因为你坚持了很久,却没有进展造成的。所以我每次都会设定一个小阶段目标,看到目标被我拿下,压力就变成了一定要一鼓作气拿下的决心了。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker数据挂载本地目录
  • STM32单片机 内存 字 字节 位关系详细讲解
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战6-组件化开发-样式结构重用常见组件
  • 关于安卓App自动化的一些想法
  • HTML5中下拉框标签`<select>`深入全面解析
  • 学习笔记 韩顺平 零基础30天学会Java(2024.9.16)
  • C语言 | Leetcode C语言题解之第405题数字转换为十六进制数
  • Flutter Error: Type ‘UnmodifiableUint8ListView‘ not found
  • sqli-labs靶场自动化利用工具——第10关
  • 新增的标准流程
  • vue3项目实现全局国际化
  • BClinux docker安装kong和konga
  • 配置Grounded-Segment-Anything出现_C not defined 或者 运行时expected type half问题(亲测解决)
  • HarmonyOS Next鸿蒙扫一扫功能实现
  • vue2的diff算法
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Apache的基本使用
  • FastReport在线报表设计器工作原理
  • iOS 颜色设置看我就够了
  • Linux下的乱码问题
  • PaddlePaddle-GitHub的正确打开姿势
  • Spring Boot MyBatis配置多种数据库
  • 闭包--闭包之tab栏切换(四)
  • 当SetTimeout遇到了字符串
  • 浏览器缓存机制分析
  • 微信小程序填坑清单
  • 我建了一个叫Hello World的项目
  • 详解NodeJs流之一
  • hi-nginx-1.3.4编译安装
  • 如何正确理解,内页权重高于首页?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​【已解决】npm install​卡主不动的情况
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #Linux(权限管理)
  • #传输# #传输数据判断#
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (二)linux使用docker容器运行mysql
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)scrum常见工具列表
  • (转)socket Aio demo
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .Net CF下精确的计时器
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net SqlSugarHelper
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .Net各种迷惑命名解释
  • ?
  • @Documented注解的作用
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @private @protected @public