问题是解决了,不知道是否是面试官想要的答案,继续探索
public static void main(String[] args) { String str = "adf wer xcv wer,hfg lk;l uiouqwerwe .sdfds k;lwerwer"; // 想要的结果:lwerwer;k sdfds. uiouqwerwe l; lk hfg,wer xcv wer adf // 业务思考: // 1:英文语句翻转,符号位置不变 // 可以得到分割符:" "(空格) // 2:分割时有些符号需要转义:常见的:"." "|"等 // 3:倒着循环获取数据 // 4:字符串拼接 // 输出的结果:lwerwer; k sdfds. uiouqwerwe l; lk hfg, wer xcv wer adf StringBuilder sb = new StringBuilder(); String[] split = str.split(" +"); for (int i = split.length-1; i >= 0; i--) { String s = split[i]; String[] strArr = s.split(""); String fuhao = null; for (int j = 0; j < strArr.length; j++) { String ss = strArr[j]; if(!Character.isLetter(ss.charAt(0))){ fuhao = ss; break; } } String sp = fuhao; if(fuhao != null){ if(sp.equals(".") || sp.equals("|")){ sp = "\\"+sp; } String[] split1 = s.split(sp); for (int j = split1.length-1; j >= 0 ; j--) { String s1 = split1[j]; if(j == split1.length-1){ sb.append(s1).append(fuhao).append(" "); }else{ sb.append(s1).append(" "); } } }else{ sb.append(s).append(" "); } } System.out.println(sb.toString()); }