Java如何从字符串数组中提取首字母生成对应缩写数组
实现思路
- 对输入字符串数组的每个元素按空格分割,得到单个姓名中包含的所有名、中间名、姓氏的独立字符串,即可遍历获取所有部分的首字母
- 遍历分割后的每个单词,取首字母后拼接
.,组成当前姓名的缩写 - 把生成的缩写存入ArrayList,全部处理完成后将ArrayList转为目标字符串数组
- 如果需要匹配示例中部分缩写末尾不带点的格式,可在单个姓名的所有首字母拼接完成后,删除最后一个
.即可
完整代码实现
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class NameAbbreviationGenerator { public static String[] generateAbbreviation(String[] nameArray) { List<String> resultList = new ArrayList<>(); // 遍历所有姓名 for (String name : nameArray) { // 按空格分割姓名为多个单词 String[] nameParts = name.split(" "); StringBuilder abbreviation = new StringBuilder(); for (String part : nameParts) { // 取每个单词的首字母,拼接. abbreviation.append(part.charAt(0)).append("."); } // 若需要删除末尾的点,放开下方注释即可匹配示例格式 // abbreviation.deleteCharAt(abbreviation.length() - 1); // 把生成的缩写加入ArrayList resultList.add(abbreviation.toString()); } // ArrayList转String数组返回 return resultList.toArray(new String[0]); } // 测试方法 public static void main(String[] args) { String[] S = {"John Smith", "Alice Huntington", "George H. Baker", "Helen Z. Gordon"}; String[] T = generateAbbreviation(S); // 输出验证结果 System.out.println(Arrays.toString(T)); } }
运行输出
默认保留末尾点的输出:
[J.S., A.H., G.H.B., H.Z.G.]
放开删除末尾点的注释后,和示例完全一致的输出:
[J.S, A.H, G.H.B, H.Z.G]
内容的提问来源于stack exchange,提问作者Silverfruit
相关产品推荐
相关产品推荐

