当前位置:   article > 正文

Java代码编写-对输入的字符串进行处理_字符串输入输出编写,一个java程序声明,str,ing变量sanime和fid编陈顺序完整一

字符串输入输出编写,一个java程序声明,str,ing变量sanime和fid编陈顺序完整一

【题目描述】

要求程序对用户输入的字符串进行处理。具体规则如下:

a)把每个单词的首字母变为大写

b)把数字与字母之间用下划线字符 (_)分开,使得更清晰

c)把单词中间有多个空格的调整为1个空格

【输入】
用户输入
you and me what  cpp2023program

【输出】
You And Me What Cpp_2023_program

唉,今天面试的时候面试官问我的这道题目,脑子当时太笨了,没答出来,这里还是复盘下,写个博客记录下

思路:

1.首先想到的是先把多余的空格去掉,s.replace("\\s+"," "),其中\s表示任意空白字符

2.然后是解决大小写的问题,这个其实可以用字符串拼接的方式实现,实现就是截取第一个字符,也就是(0,1)然后在+剩余的字符,也就是截取(1)从1的位置开始以后的字符串,这样就行了

3.这块想到的是判断单个字符中是否包含数字,这个包含是用正则表达式去判断的,然后对这个字符串进行char遍历,判断前后字符串是否包含数字或者字母,如果包含的话,就加_,否则不加

代码:

  1. public static void main(String[] args) {
  2. String a = "you and me what cpp2023prog3ram";
  3. //移除多余的空格
  4. String str1 = a.replaceAll("\\s+", " ");
  5. StringBuilder sb = new StringBuilder();
  6. StringBuilder sb2 = new StringBuilder();
  7. String stringArray[] = str1.split(" ");
  8. for (int i = 0; i < stringArray.length; i++) {
  9. String s = stringArray[i];
  10. Pattern pattern = Pattern.compile("[0-9]+");
  11. Matcher matcher = pattern.matcher(s);
  12. if (matcher.find()) {
  13. //包含数字
  14. for (int j = 0; j < s.length(); j++) {
  15. if(j+1<s.length()){
  16. if ((s.charAt(j) >= 'a' && s.charAt(j) <= 'z' || s.charAt(j) >= 'A' && s.charAt(j) <= 'Z') &&
  17. (s.charAt(j + 1) >= '0' && s.charAt(j + 1) <= '9')) {
  18. //前面为字母,后面为数字
  19. sb2.append(s.charAt(j) + "_");
  20. } else if ((s.charAt(j) >= '0' && s.charAt(j) <= '9' && s.charAt(j + 1) >= 'a')
  21. && (s.charAt(j + 1) <= 'z' || s.charAt(j + 1) >= 'A' && s.charAt(j + 1) <= 'Z')) {
  22. //前面为数字,后面为字母
  23. sb2.append(s.charAt(j) + "_");
  24. }else{
  25. sb2.append(s.charAt(j));
  26. }
  27. }else {
  28. //显示最后一个
  29. sb2.append(s.charAt(j));
  30. }
  31. }
  32. if (sb2.length() > 0) {
  33. sb.append(sb2.toString());
  34. }
  35. } else {
  36. //首字母大写
  37. String item = stringArray[i].substring(0, 1).toUpperCase() + stringArray[i].substring(1).toLowerCase();
  38. sb.append(item + " ");
  39. }
  40. }
  41. System.out.println(sb.toString());
  42. }

结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/731984
推荐阅读
相关标签
  

闽ICP备14008679号