当前位置: 首页 > 面试题库 >

Java中字符串字符的结尾

宋昕
2023-03-14
问题内容

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

在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','a','m'} , 'a')))

这将被打印: slm m

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


问题答案:

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中的特定String中删除特定字符?) 问题答案: text.replaceAll(“;”, “”); 由于Java中的字符串是不可变的,因此method不会进行就地替换,而是会返回新的修改后的字符串。

  • 问题内容: 为什么以下算法对我来说不停止?(str是我要搜索的字符串,findStr是我要寻找的字符串) 问题答案: 最后一行造成了问题。永远不会为-1,所以会有无限循环。可以通过将代码的最后一行移到if块中来解决此问题。

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果

  • 本文向大家介绍Java的字符串中对子字符串的查找方法总结,包括了Java的字符串中对子字符串的查找方法总结的使用技巧和注意事项,需要的朋友参考一下 Java中字符串中子串的查找共有四种方法,如下: 1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 2、int indexOf(String str, int startIndex):从指定的索引处

  • 对性能是否有影响? 不同Java版本的行为是否有差异?