diff --git a/README.md b/README.md
index caa3eee..68b3289 100644
--- a/README.md
+++ b/README.md
@@ -19,13 +19,14 @@
支持的具体功能如下:
-- 针对任意文本(无论是否有分隔符),对照单个或多个名单查找缺失的名字,并可同时查看此时正在使用的全名单
+- 针对任意文本(无论名字间是否有分隔符),对照单个或多个名单查找缺失的名字,并可同时查看此时正在使用的全名单
- 可以直接在插件内输入文本
- - 👍可以选中任意文本(甚至excel表格),然后通过utools快捷面板一键呼出“查找漏网之鱼”
+ - 🌟 可以选中任意文本(甚至excel表格),然后通过utools快捷面板一键呼出“查找漏网之鱼”
+ - *注:如果“张三”和“张三丰”同时存在,会首先匹配更长的“张三丰”;如果查询字符串有歧义,例如“张三丰子恺”,可以手动在名字间添加分隔来消歧*
- 支持设置名单,自动从文本中识别连续英文字母和汉字字符构成的名字(空格、逗号等其他字符作为分断)
- 可以直接在设置输入框内键入文本
- 可以上传文件
- - 👍可以选中任意文本(甚至excel表格),然后通过utools快捷面板一键呼出“新建名单”
+ - 🌟 可以选中任意文本(甚至excel表格),然后通过utools快捷面板一键呼出“新建名单”
@@ -58,12 +59,16 @@
1. 首先确保已安装[uTools](https://u.tools/)。uTools是一个跨Windows、macOS和Linux的效率工具平台,本插件基于uTools的快捷入口(如超级面板)实现一键光速获取结果的效果,打造极为高效的桌面工具。
2. 安装好uTools之后,有两种安装本插件的方式:
- - **推荐**:在官方插件应用市场搜索“漏网之鱼”并安装,方便后续更新
- - 从本仓库的[release界面](https://github.com/atomiechen/CatchFishIfYouCan/releases)下载插件文件,并通过utools超级面板或选中文件呼出utools来安装插件
+ - **推荐**:在官方插件应用市场搜索“漏网之鱼”并安装(见下图),方便后续更新
+ - 从本仓库的[release页面](https://github.com/atomiechen/CatchFishIfYouCan/releases)下载插件文件,并通过utools超级面板或选中文件呼出utools来安装插件
+
+
+
+
-## Contributor
+## Contributors
Atomie CHEN:atomic_cwh@163.com
diff --git a/img/market_marked.png b/img/market_marked.png
new file mode 100644
index 0000000..074437c
Binary files /dev/null and b/img/market_marked.png differ
diff --git a/src/find.js b/src/find.js
index 600230e..00a44d3 100644
--- a/src/find.js
+++ b/src/find.js
@@ -48,7 +48,7 @@ function stringToNames(namesString) {
.filter(v => v)
// remove duplicate names
.forEach(allNames.add, allNames);
- return Array.from(allNames);
+ return Array.from(allNames).sort((a, b) => (a.length - b.length) || a.localeCompare(b));
}
utools.onPluginEnter(({code, type, payload}) => {
@@ -196,11 +196,19 @@ function removeNameList() {
function findFish(namesString, allNames) {
namesString = namesString.trim();
const fish = [];
- allNames.forEach(v => {
- if (!namesString.includes(v)) {
- fish.push(v);
- }
- })
+ // reversely loop to check the longer string first
+ // than the shorter one that may be the prefix
+ let i = allNames.length - 1;
+ for (; i >= 0; i--) {
+ let target = allNames[i];
+ if (!namesString.includes(target)) {
+ fish.push(target);
+ } else {
+ // replace all occurences of target word
+ let re = new RegExp(target, 'g');
+ namesString = namesString.replace(re,'|');
+ }
+ }
return fish;
}