You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

检查字符串值是否为负数的最简洁实现方法是什么?

你原有写法存在两个小问题:一是空字符串调用s.head会抛出NoSuchElementException异常,二是如果输入只有-一个字符时会返回true,不符合负数的规则。以下是两种更简洁也更安全的实现方案:

方案1:正则表达式实现(最简洁)

直接用Scala字符串内置的matches方法匹配负整数的正则规则,代码只有一行,还自动处理了所有边界场景:

def isNegNumber(s: String): Boolean = s.matches("""-\d+""")

说明:三重引号是Scala的原生字符串写法,不需要转义反斜杠,该规则会匹配以-开头、后续全为数字且至少有一位数字的字符串,空串、只有-的字符串、含非数字字符的字符串都会返回false。

方案2:原生字符串方法优化(无正则依赖)

如果你不想引入正则,可以优化你原来的写法,替换成更简洁的API同时修复边界问题:

def isNegNumber(s: String): Boolean = s.length > 1 && s.startsWith("-") && s.tail.forall(_.isDigit)

说明:用startsWith("-")代替s.head == '-'避免空串抛出异常,用tail代替substring(1)写法更简洁,加length > 1的判断避免只有-的字符串被误判为合法负数。


内容的提问来源于stack exchange,提问作者WashingMachine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:06:04