Java中字符串字符的结尾

问题描述

Java不会像C那样“标记”字符串的结尾。它跟踪长度和值,因此\0字符串中可以包含零个字符()。如果String从包含char的char数组创建a\0,则结果String将包含这些字符。

还要注意,数组的大小是静态的-无法调整大小,因此您必须自己跟踪“大小”(String构造函数不会从char数组的末尾为您删除不需要的字符)。

考虑使用以下任一方法

  • StringBuilder如通过克莱德伯德III,或建议

  • String(char value[], int offset, int count); 您必须以编程方式确定适当的值offset以及count将要使用的适当值。也许String方法(例如replaceconcatsubstring可能会有所帮助。

解决方法

我正在解决一个简单的问题:

在Java中删除字符数组中的某些字符,想法很简单:

static void remove_char(char[] arr,char c){
    int r = 0;
    for (int i = 0 ; i < arr.length ; i++){
        if (arr[i] == c){
            r++;
            continue;
        }
        arr[i - r] = arr[i];
    }
    arr[arr.length - r] = '\0'; // ??
    return;
}

我想输入一个ending character信号,表示当我们想要使用例如生成一个字符串时,不必考虑数组的其余部分new String(arr)

Java中是否有这样的字符?(我想是C\0但我不确定)

例如,当我们调用:

System.out.println(new String(remove_char(new char[] {'s','a','l','m'},'a')))

这将被打印: slm m

虽然我想得到,但我不想使用新的数组slm来做到这一点in-place

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”