【发布时间】:2021-08-03 09:08:27
【问题描述】:
检查字符串是否仅包含空字符的正确方法是什么?
String s = "\u0000";
if(s.charAt(0) == 0) {
System.out.println("null characters only");
}
或者
String s = "\0\0";
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == 0)
continue;
else break;
}
两者都有效。但是有没有更好更简洁的方法来执行这个检查。是否有一个实用程序来检查 java 中的字符串是否只包含 null
字符(\u0000 或 \0)?
'\0' 和 '\u0000' 有什么区别?
【问题讨论】:
-
嗯。我很难想到一个 valid 用例,它涉及测试一个字符串是否只包含 NUL 字符。 (我能想到的唯一用例是将非文本数据视为文本......这在概念上是错误的。)
-
@StephenC,我的服务需要调用下游服务器,它在json正文中返回一个参数说“eCode”,基于此我需要检查下游服务器是否有问题,所以如果此字符串为空或仅包含空字符,则一切正常,否则,如果“eCode”包含除我需要之外的任何其他内容,则向上游返回错误响应。
-
OK ... 那么为什么服务器会在 JSON 响应中向您发送一个包含 NUL 字符的字符串?那是……嗯……糟糕的设计。你确定你没有误解规范吗? (它可能实际上是说“一个空字符串或 null”?JSON 中有一个 null 值。)
-
不,我什至测试过调用服务,他们返回空字符串,我最初认为它应该是空字符串或“”空字符串,但是当我的测试用例失败时,我意识到他们正在返回别的东西,这确实是一个糟糕的设计,我同意,但你知道,我必须处理它,因为我没有其他服务的所有权。
标签: java string java-8 char null-character