• JAVA工具类匹配重复或者连续的字符和符号


    1. import java.util.ArrayList;
    2. import java.util.List;
    3. public class StringChecker {
    4. static String SYMBOLS = "~!@#$%^&*()_+{}|<>?,./";
    5. static List symbolSubstrings = splitStringIntoSubstrings(SYMBOLS, 3);
    6. /**
    7. * 检查字符串是否包含重复或递增的字符
    8. *
    9. * @param str 要检查的字符串
    10. * @return 如果字符串包含重复或递增的字符,则返回true;否则返回false
    11. */
    12. public static boolean containsRepeatingOrIncrementalChars(String str) {
    13. int length = str.length();
    14. if (length < 3) {
    15. return false;
    16. }
    17. int[] asciiArray = convertToAsciiArray(str);
    18. for (int i = 0; i < asciiArray.length; i++) {
    19. if (i >= asciiArray.length - 2) {
    20. break;
    21. }
    22. int current = asciiArray[i];
    23. int next = asciiArray[i + 1];
    24. int afterNext = asciiArray[i + 2];
    25. // 校验重复或递增的数字或字母
    26. if ((next == current + 1 && afterNext == next + 1) || (current == next && next == afterNext)) {
    27. return true;
    28. }
    29. }
    30. for (String symbol : symbolSubstrings) {
    31. if (str.contains(symbol)) {
    32. return true;
    33. }
    34. }
    35. return false;
    36. }
    37. /**
    38. * 将字符串按指定长度拆分成子串
    39. *
    40. * @param str 要拆分的字符串
    41. * @param substringLength 子串的长度
    42. * @return 拆分后的子串列表
    43. */
    44. public static List splitStringIntoSubstrings(String str, int substringLength) {
    45. List substrings = new ArrayList<>();
    46. for (int i = 0; i < str.length(); i++) {
    47. if (i + substringLength > str.length()) {
    48. break;
    49. }
    50. int endIndex = Math.min(i + substringLength, str.length());
    51. String substring = str.substring(i, endIndex);
    52. substrings.add(substring);
    53. }
    54. return substrings;
    55. }
    56. /**
    57. * 将字符串转换为ASCII码数组
    58. *
    59. * @param str 要转换的字符串
    60. * @return ASCII码数组
    61. */
    62. public static int[] convertToAsciiArray(String str) {
    63. int[] asciiArray = new int[str.length()];
    64. for (int i = 0; i < str.length(); i++) {
    65. asciiArray[i] = (int) str.charAt(i);
    66. }
    67. return asciiArray;
    68. }
    69. public static void main(String[] args) {
    70. System.out.println(containsRepeatingOrIncrementalChars("abc3132132")); // true
    71. System.out.println(containsRepeatingOrIncrementalChars("123fasfadfas")); // true
    72. System.out.println(containsRepeatingOrIncrementalChars("!@#dfafa")); // true
    73. System.out.println(containsRepeatingOrIncrementalChars("aabc")); // true
    74. System.out.println(containsRepeatingOrIncrementalChars("fas12@##")); // false
    75. }
    76. }

  • 相关阅读:
    按键中断
    Hive-命令行CDH访问开启kerberos的hive
    感染了后缀为.faust勒索病毒如何应对?数据能够恢复吗?
    解决ubuntu中没有网络连接的图标
    【web开发网页制作】html+css家乡长沙旅游网页制作(4页面附源码)
    ChunJun&OceanBase联合方案首次发布:构建一体化数据集成方案
    Python3数据科学包系列(二):数据分析实战
    AMD EPYC(霄龙)Genoa服务器 | 综合评测
    无法打开包括文件: “libxml/xpath.h”: No such file or directory
    多级别划分化学制品制造业经销商,经销商商城系统优化企业分销渠道链
  • 原文地址:https://blog.csdn.net/qq_29752857/article/details/134513906