如何解决在Java中找不到字符串的结尾字符
尝试不使用长度方法来查找字符串的长度…使用“ charAt()”函数..请让我们知道字符串的最后一个字符是什么。.使用,null和'\ 0'进行尝试。 。但是仍然找不到结束符。
str=”test this string”;
int i=0;
char p=str.charAt(i);//’\u00A00′;
while(p!=’\0’){
p=str.charAt(i);++i;
}
System.out.println("Length of string : "+str+" is "+i);
解决方法
在某些(通常在C语言中)字符串实现中,字符串的“长度”通过前哨字符(通常为“ \ 0”)进行跟踪。合同是:
- 实际字符'\ 0'不能在字符串中。
- '\ 0'字符是终止符;它本身不是字符串的一部分,并发出结尾信号。
这根本不是Java的工作方式。
还有其他编码字符串长度的方法。例如,首先存储字符串的长度,然后存储那么多字节。以字节为单位,想象一下它在内存中:
while(query.next()){
QString usernameDB,passwordDB,emailDB,phoneDB;
usernameDB = query.value(1).toString();
passwordDB = query.value(2).toString();
emailDB = query.value(3).toString();
phoneDB = query.value(4).toString();
if(username==usernameDB || email == emailDB || phone == phoneDB){
return false;
}
else{
return true;
}
}
然后,在给定指向第一个0x00的指针的情况下,代码可以确定为return query.size() > 0
。您有一种假设的方式来存储效果很好的字符串。但是,扫描“结尾0x00”将不起作用,因为这种存储字符串的特定方式没有这种方式。
以上内容与Java的工作方式非常接近。但是,更复杂的是,java是java。 java不执行指针。 不可能获取指向该长度字段的内存指针。
结论:您想做什么?不可能。没有many bytes ... 0x00 0x00 0x00 0x05 0x48 0x65 0x6C 0x6C 0x6F ... many more bytes
可以找到,并且您无法读取包含该长度的内存。它被抽象掉了;如果需要长度,则调用"Hello"
。故事结束。
当然,有一些创造性,愚蠢且完全学术性的方法可以做到这一点。例如:
\0
您甚至可以通过一些漂亮的数学运算来使该O(logn)生效。我完全不知道这有什么可能的意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。