我目前正在编写一个脚本,判断用户名密码的有效性.&用户名应包含3到20个字符,除"之外,没有特殊字符."、"_"和"@".

目前,这是我的功能:

fun isValidUsername(username: String): Boolean {
    var usrnmlength = true
    var usrnmspecial = true
    
    if ((username.length < 3) or (username.length > 20)) { usrnmlength = false }
    if (username.filter { !it.isLetterOrDigit() }.firstOrNull() != null) {usrnmspecial = false}

    return if ((usrnmlength) and (usrnmspecial)) {
        (true)
    } else {
        (false)
    }

}

它会判断用户名是否有3到20个字符,以及用户名是否没有特殊字符.但它也说用户名无效,如果有特殊字符"."、"_"和"@".这些应该被允许.我该怎么办?

推荐答案

您可以将判断特殊字符的条件修改为允许"."、"_"和"@",同时过滤掉其他特殊字符.以下是更新的函数:

fun isValidUsername(username: String): Boolean {
var usrnmlength = true
var usrnmspecial = true

if ((username.length < 3) or (username.length > 20)) { 
    usrnmlength = false 
}

if (username.filter { !(it.isLetterOrDigit() || it in listOf('.', '_', '@')) }.firstOrNull() != null) {
    usrnmspecial = false
}

return usrnmlength && usrnmspecial

}

此修改确保用户名在3到20个字符之间且仅包含字母、数字、"时被视为有效."、"_"或"@".

Kotlin相关问答推荐

来自SnapshotFlow的单元测试StateFlow仅发出initialValue

&x是T&q;和&q;(x为?T)!=空(&Q;)?

如何修改muableStateMapOf的值?

为什么Kotlin不用static inner class来实现带有object关键字的单例呢?

如何在 micronaut 上启用 swagger UI?

Lets plot Kotlin中的多轴比例

在jetpack compose中将默认方向设置为横向?

从带有 Room 和 Flows 的 SQLite 表中获取祖先树

Kotlin:如何使用第一个参数的默认值进行函数调用并为第二个参数传递一个值?

Kotlin - 创建指定长度的随机整数的 ArrayList?

如何使用 Findbugs 避免 kotlin 文件

Kotlin 1.2.21 + SimpleXml 2.3.0 - consume List error (must mark set get method)

Kotlin 中的 Java Scanner 相当于什么?

使用 Paging 3 时保存并保留 LazyColumn 滚动位置

在 gradle android library kotlin 项目中禁用 META-INF/* 生成

在Kotlin中为Android编写库会有开销吗?

用于代码生成的ANTLR工具版本4.7.1与当前运行时版本4.5.3不匹配

如何在Kotlin中使用Handler和handleMessage?

Kotlin,什么时候按map授权?

函数引用和lambdas