Java中的字符串终止符
String terminator in Java
我是一名经验丰富的C++程序员,但对Java还是个新手。
我有一个算法,做一些字符串操作,我想终止字符串在中间。
比如说,我想做一些类似的事情
String str("hello, world");
char[] str2 = str.toCharArray();
//pass str2 to some function
myFunc(str2);
...
//inside myFunc, I decide to terminate str2 at position 3, so I did
//str2[3] = 0
//then it returns, how can I construct an String type variable from str2 that includes chars before the ' '?
//String str3 = new String(str2), doesn't work
我可以写我自己的C类strlen
。然而,我想知道在Java中做这件事的优雅方式是什么。
此外,很难找到关于类型char[]
的文档。每当我在谷歌上搜索时,我只能在"char"而不是"char[]"上找到文档。我认为char[]可能有类似substr
或strlen
的方法。
谢谢你的建议!
在Java中,char[]
和String
完全不同。忘记C的关联吧,就你目前而言,它们没有任何联系。(为了完整起见,String
对象包含一个代表字符串的final char[]
(它是而不是null终止),您可以像在示例中那样获得它。在弄清楚区别之前,不要这样做。)您可以调用字符串上的所有方法。但请记住,在Java中,String
是不可变的——如果您有一个String,它将始终是相同的。您可以将一个新的String对象分配给一个变量,但旧的字符串不会改变(当然,直到所有引用都消失,并且它得到GC’d)。当尝试获取新字符串时,请记住这一点非常重要,如下所示。一旦确定了字符串的长度,就使用.substring()
。
所以你的例子应该是这样的:
// Remember in Java no object is statically allocated.
String str1 = "Hello, World";
int indexToCutAt = myFunc(str1);
// We can't change str1, so we'll need to store the new string.
String str2 = str1.substring(0,indexToCutAt);
如果我错了,请纠正我,但看起来你只是想获得String
的前三个字符。要做到这一点,你可以做:
str.substring(0, 3);
char[]
不是它自己的类。所有数组都有长度,您可以如下检索:
char[] myChars = new Char[5];
return myChars.length; // returns 5
但是,通常情况下,您应该只将事物作为String
对象处理,而不是作为char[]
对象处理。String
扩展了CharSequence
,后者(顾名思义)只是char
基元的序列,本质上是char[]
。
tl;dr:只需使用String
方法
使用javasubstring方法String#substring()
str3 = str.substring(0, 3);
看看,substring(int beginIndex)和substring,int endIndex),这将有所帮助:)
所以在你的函数myFunc(str2);
中,返回你想要打破的位置,比如pos
,
所以你想写一些类似的东西
int pos = myFunc(str2);
String str3 = str2.substring(0,pos);
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在字符串函数中抛出'char const*'实例后调用的终止
- 使用终止程序的指针在数组中输入字符串
- 如何告诉字符串流忽略null终止字符
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- 如何将非空终止字符串输出到 iostream,但保持格式
- 是否有一种安全的方法可以断言字符串视图是否以 null 终止?
- 自动截断和 null 终止缓冲区溢出中的字符串缓冲区
- 用户定义的字符串文字为字符串null终止
- 如何制作包含原始字符串终止符C++原始字符串
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 终止字符串的 '