有同学问:
想找一个win平台,将文字选取复制到剪切板后自动统计字数并显示的工具,最近文字工作比较多。
有同学问:
想找一个win平台,将文字选取复制到剪切板后自动统计字数并显示的工具,最近文字工作比较多。
假设没有这种软件,我们可能需要写一个出来
大多语言都能实现读取和监控剪贴板内容,这不是啥大问题,我认为主要问题有两个
1,UI设计:要让统计的字数以何种方式,在何处出现。弹窗提醒我认为不是一个好选择,用户只能查看一次;置顶一个小窗口来显示又太占用屏幕空间了。
2,用户设置:设置选项应该如何排布,使得其能够应对用户对中英文统计、无标点统计、无符号统计的不同需求
中文字数怎么计算,emoji 字数怎么计算……反正吧,挺复杂的其实
统计字数还蛮麻烦的,之前写过一个偷摸写小说的软件(就是只有一行、没有操作栏、背景可选颜色之类的),想加一个字数统计
就发现我的软件、word、Obsidian和某小说平台的字数都是不一样的,甚至一开始差距还蛮大的,调整了好几次才缩小了差距
以前搞过一个油猴脚本来统计字数:
https://greasyfork.org/scripts/10763
CopyQ 支持脚本.
其中有个API 是 Length. 可以统计字符串长度.
如果只是要长度信息, 不考虑剪贴板增强.
可以用AHK ,但是意义不大.
大概的代码如下, 没有优化, 所以如果2次复制的长度一样会不提示. 但是明白这点也不算bug.
#Persistent
SetTimer, testmt, 10
testmt:
a :=StrLen(clipboard)
sleep,100
b :=StrLen(clipboard)
;每一百毫秒,剪贴板送到a和b变量空间,
if(a<>b)
{
Msgbox %b%
}
return
```
https://wwgz.lanzouw.com/b00mouxvyb
密码:hpjc
搓了一个,看看能不能用
欢迎任何建议和批评!后续有需要会依照需求更新软件
歪个楼,有个 Linux 系统上的解决方案:命令行执行如下命令
watch -p 1 "xsel -ob | wc -m"
其中,
watch -p 1
代表每 1 秒运行一次后面引号中的命令,并输出运行结果xsel -ob
用于将剪切板中的内容输出到终端中wc -m
用于计算文本的字符数(但需注意,汉字、英文字母、阿拉伯数字、换行符都会算一个字符)其实到最后,还是楼上的那个问题:以什么规则进行字数统计?
我的解决方案是统一使用或者转换为unicode编码,根据码区定位
参见部分我的解决方案实现
// 每组大括号代表一个取值范围,例如0x20~0x2f
// 符合下列范围的取值均为英文字母标点
// 注解:定义能够在unicode官网找到
std::map<int, int> EnglishPunctuationRanges = {
{0x20, 0x2F},
{0x3A, 0x40},
{0x5B, 0x60},
{0x7B, 0x7E}
};
// 检查某字符在何取值范围内
bool CheckChar(std::map<int, int> ranges,int c)
{
for (const auto& range : ranges)
if (c >= range.first && c <= range.second)
return true;
return false;
}
我感觉三楼说的可能还有一层意思:涉及到像论文、报告、作文这种有字数要求的文书时,要用什么样的字数计数规则?比如,标点符号算不算字数?英文单词算几个字?阿拉伯数字算几个字?