From 26c40fb51c6b539f94b225b0ace1b06a2f05783b Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 17 Feb 2025 13:03:46 +0800 Subject: [PATCH] fix stopchars --- .../src/main/java/cn/hutool/dfa/StopChar.java | 42 +++++++++---------- .../src/test/java/cn/hutool/dfa/DfaTest.java | 5 ++- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/hutool-dfa/src/main/java/cn/hutool/dfa/StopChar.java b/hutool-dfa/src/main/java/cn/hutool/dfa/StopChar.java index 583380653..d4ffb136d 100755 --- a/hutool-dfa/src/main/java/cn/hutool/dfa/StopChar.java +++ b/hutool-dfa/src/main/java/cn/hutool/dfa/StopChar.java @@ -1,37 +1,37 @@ package cn.hutool.dfa; -import java.util.Set; - import cn.hutool.core.collection.CollUtil; +import java.util.Set; + /** * 过滤词及一些简单处理 - * + * * @author Looly */ public class StopChar { /** 不需要处理的词,如标点符号、空格等 */ public static final Set STOP_WORD = CollUtil.newHashSet(' ', '\'', '、', '。', // - '·', 'ˉ', 'ˇ', '々', '—', '~', '‖', '…', '‘', '’', '“', '”', '〔', '〕', '〈', '〉', '《', '》', '「', '」', '『', // - '』', '〖', '〗', '【', '】', '±', '+', '-', '×', '÷', '∧', '∨', '∑', '∏', '∪', '∩', '∈', '√', '⊥', '⊙', '∫', // - '∮', '≡', '≌', '≈', '∽', '∝', '≠', '≮', '≯', '≤', '≥', '∞', '∶', '∵', '∴', '∷', '♂', '♀', '°', '′', '〃', // - '℃', '$', '¤', '¢', '£', '‰', '§', '☆', '★', '〇', '○', '●', '◎', '◇', '◆', '□', '■', '△', '▽', '⊿', '▲', // - '▼', '◣', '◤', '◢', '◥', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█', '▉', '▊', '▋', '▌', '▍', '▎', '▏', '▓', // - '※', '→', '←', '↑', '↓', '↖', '↗', '↘', '↙', '〓', 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ', '①', // - '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⒈', '⒉', '⒊', '⒋', '⒌', '⒍', '⒎', '⒏', '⒐', '⒑', '⒒', '⒓', // - '⒔', '⒕', '⒖', '⒗', '⒘', '⒙', '⒚', '⒛', '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀', // - '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇', 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ', 'Ⅺ', 'Ⅻ', '!', // - '#', '¥', '%', '&', '(', ')', '*', ',', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', // - '8', '9', ':', ';', '<', '=', '>', '?', '@', '\', '^', '_', '{', '|', '}', 'Ρ', // - 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', // - 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', '﹊', '﹍', '╭', '╮', '╰', '╯', '', '_', // - '/', '\\', '\"', '<', '>', '`', '{', '}', '~', '(', ')', '-', // - '$', '@', '*', '&', '#', '卐', '㎎', '㎏', '㎜', '㎝', '㎞', '㎡', '㏄', '㏎', '㏑', '㏒', '㏕', '+', '=', '?', - ':', '.', '!', ';', ']','|','%'); + '·', 'ˉ', 'ˇ', '々', '—', '~', '‖', '…', '‘', '’', '“', '”', '〔', '〕', '〈', '〉', '《', '》', '「', '」', '『', // + '』', '〖', '〗', '【', '】', '±', '+', '-', '×', '÷', '∧', '∨', '∑', '∏', '∪', '∩', '∈', '√', '⊥', '⊙', '∫', // + '∮', '≡', '≌', '≈', '∽', '∝', '≠', '≮', '≯', '≤', '≥', '∞', '∶', '∵', '∴', '∷', '♂', '♀', '°', '′', '〃', // + '℃', '$', '¤', '¢', '£', '‰', '§', '☆', '★', '〇', '○', '●', '◎', '◇', '◆', '□', '■', '△', '▽', '⊿', '▲', // + '▼', '◣', '◤', '◢', '◥', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█', '▉', '▊', '▋', '▌', '▍', '▎', '▏', '▓', // + '※', '→', '←', '↑', '↓', '↖', '↗', '↘', '↙', '〓', 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ', '①', // + '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⒈', '⒉', '⒊', '⒋', '⒌', '⒍', '⒎', '⒏', '⒐', '⒑', '⒒', '⒓', // + '⒔', '⒕', '⒖', '⒗', '⒘', '⒙', '⒚', '⒛', '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀', // + '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇', 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ', 'Ⅺ', 'Ⅻ', '!', // + '#', '¥', '%', '&', '(', ')', '*', ',', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', // + '8', '9', ':', ';', '<', '=', '>', '?', '@', '〔', '\', '〕', '^', '_', '‘', '{', '|', '}', 'Ρ', // + 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', // + 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', '(', ')', '^', '﹊', '﹍', '╭', '╮', '╰', '╯', '', '_', // + '', '^', '(', ':', '!', '/', '\\', '\"', '<', '>', '`', '{', '}', '~', '(', ')', '-', // + '$', '@', '*', '&', '#', '卐', '㎎', '㎏', '㎜', '㎝', '㎞', '㎡', '㏄', '㏎', '㏑', '㏒', '㏕', '+', '=', '?', + ':', '.', '!', ';', ']','|','%'); /** * 判断指定的词是否是不处理的词。 如果参数为空,则返回true,因为空也属于不处理的字符。 - * + * * @param ch 指定的词 * @return 是否是不处理的词 */ @@ -41,7 +41,7 @@ public class StopChar { /** * 是否为合法字符(待处理字符) - * + * * @param ch 指定的词 * @return 是否为合法字符(待处理字符) */ diff --git a/hutool-dfa/src/test/java/cn/hutool/dfa/DfaTest.java b/hutool-dfa/src/test/java/cn/hutool/dfa/DfaTest.java index 515237e25..97b068be5 100755 --- a/hutool-dfa/src/test/java/cn/hutool/dfa/DfaTest.java +++ b/hutool-dfa/src/test/java/cn/hutool/dfa/DfaTest.java @@ -1,11 +1,12 @@ package cn.hutool.dfa; import cn.hutool.core.collection.CollUtil; -import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + /** * DFA单元测试 * @@ -27,7 +28,7 @@ public class DfaTest { // 匹配到【大】,就不再继续匹配了,因此【大土豆】不匹配 // 匹配到【刚出锅】,就跳过这三个字了,因此【出锅】不匹配(由于刚首先被匹配,因此长的被匹配,最短匹配只针对第一个字相同选最短) List matchAll = tree.matchAll(text, -1, false, false); - assertEquals(matchAll, CollUtil.newArrayList("大", "土^豆", "刚出锅")); + assertEquals(CollUtil.newArrayList("大", "土^豆", "刚出锅"), matchAll); } /**