如何替换字符串数组中的第一个字母和最后一个字母
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]
我正在尝试替换字符串数组中的每个单词,第一个字母为 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]