如何替换字符串数组中的第一个字母和最后一个字母

How to replace first letter and last letter in array of strings

我正在尝试替换字符串数组中的每个单词,第一个字母为 A,最后一个字母为 Z

我的阵列:

String[] replaceFirstLetter1 = new String[]{"Java Bople Orange New Dog Cat"};

这就是我正在尝试的:

  public static String[] replaceFirstLetterWithZ(String[] replaceFirstLetter) {
        String[] tempTable = new String[replaceFirstLetter.length];
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < replaceFirstLetter.length; i++) {
            stringBuilder.append(replaceFirstLetter[i]);
            stringBuilder.replace(0, replaceFirstLetter.length, "A");
            stringBuilder.replace(replaceFirstLetter.length-1, replaceFirstLetter.length, "Z");
            tempTable[i] = stringBuilder.toString();
        }
        return tempTable;
    }

无论如何我的输出不是我所期待的 输出:

[Zava Bople Orange New Dog Cat]

你们中的任何人都可以告诉我应该在什么地方寻找我的错误吗? 谢谢

正则表达式是这里的转到工具。

用 A 和 Z 替换字符串中每个单词的第一个和最后一个字符:

str = str.replaceAll("\w(\w*)\w", "AZ");

这通过匹配单词但捕获单词的所有字符(第一个和最后一个字符除外)并将匹配项替换为 A-group1-Z 来实现。

仅供参考,只有 1 个字母的单词不匹配。

将其应用于字符串数组:

for (int i = 0; i < array.length; i++) {
    array[i] = array[i].replaceAll("\w(\w*)\w", "AZ");
}

除了 Bohemian 提到的正则表达式(这是这类东西的规范)之外,您还可以通过使用 substring 删除第一个和最后一个字符来手动完成:

public static void main(String[] args) {

    String[] arr = replaceFirstLetterWithZ("Java Bople Orange New A Dog Cat".split(" "));
    System.out.println(Arrays.toString(arr));
}

public static String[] replaceFirstLetterWithZ(String[] arr) {

    for (int i = 0; i < arr.length; i++) {
        if (arr[i].length() > 1) {
            arr[i] = "A" + arr[i].substring(1, arr[i].length() - 1) + "Z";
        }
    }
    return arr;
}

在使用 substring 时,您需要注意不要得到 StringIndexOutOfBoundsException,因此使用检查以确保大小大于 1,如果 String不符合要求,不做替换

例如,字母A不会被替换成任何东西,因为没有两个字符可以替换。

还要注意 String[] replaceFirstLetter1 = new String[]{"Java Bople Orange New Dog Cat"}; 的主要变化,您需要 split 才能将 String 分解为一个数组。按照您的操作方式,整个 String 都在同一个数组元素中。

输出:

[AavZ, AoplZ, ArangZ, AeZ, A, AoZ, AaZ]