程序员约架的方式。。。哈哈哈
这是要打仗了吗?
Perl 5 还是 6 啊
只有perl5
(defun my-hide (beg end)
(interactive "r")
(let ((pt beg)
(i 1))
(while (<= pt end)
(when (aref (char-category-set (char-after pt)) ?C)
(when (cl-evenp i) ; `cl-evenp'用来隐双数字,`cl-oddp'用来隐单数字。
(put-text-property pt (1+ pt) 'display
;; 原地替换"离"为"_"、"*"或者"[离]"。
(concat "[" (char-to-string (char-after pt)) "]")))
(cl-incf i))
(cl-incf pt))))
org-drill要求是 [啊]
text-property可没用
没用过"org-drill",我是在"emacs-lisp-mode"下根据"xuchunyang"的代码改的,请原谅我的粗心大意所造成的困扰。
有bug
(cm/mask-string "易学看人啊,不置可否。" nil t)
应该输出为
"[易]学[看]人[啊],不[置]可[否]。"
这个要求是楼主提的
您写一个吧,反正也不难
我写了,我说不难,请问你有什么问题?
你已经空手套了我这么多代码,是不是该自己写点表示尊敬?
你可以放弃的,因为你自己也觉得难
我横竖看了整栋楼,楼主提了这种需求?你又成了楼主了?
我寻思我没有漫天要价,你也不能坐地还钱吧。
就这样吧
我有说过 “不难” 吗
放弃哦
我是不是要去翻翻链接
这句话好像是我对你说过的
Today I learned 写正则是程序员约架的常用方式
我觉得正则表达式不能很好的解决这个问题
用状态机应该可以
我佩服你的理解能力
你不要自嘲了,我笑起来肚子很疼的
建议直接看一楼获取最大节目效果。
不怪你,楼主表达有歧义。
不会打脸就不要打。
本来好好的发代码交流。可你非要一回diss我瞎,一回diss我傻,还越庖代俎地审查我代码,替lz给我加要求。结果通通成了自嘲完美,何苦呢?
当然如果你不觉得丢人现眼,我也不厌其烦。你做小丑我开心,何乐而不为呢?
(defun cm/mask-string (s &optional mask-even-p by-word-p count-in-total)
(let ((one-word (rx (or (and bow (1+ (any "a-z" "A-Z" "0-9")))
(category chinese-two-byte))))
(punct (rx (or punct blank))))
(-let (((contents seps) (cm/split* punct s 'omit-null))
(pred (if mask-even-p #'cl-evenp #'cl-oddp)))
(setq contents (if by-word-p
(-let [total-idx 0]
(--map
(->> it
(s-match-strings-all one-word)
(-flatten)
(-map-indexed
(lambda (idx subs)
(if (funcall pred (if count-in-total
(setq total-idx (1+ total-idx))
(1+ idx)))
(s-wrap subs "[" "]")
subs)))
(s-join ""))
contents))
(--map-indexed
(if (funcall pred (1+ it-index))
(s-wrap it "[" "]")
it)
contents)))
(s-join "" (apply #'-interleave (-pad "" contents seps))))))
本人素来大度,把你的新需求也做了。
测试用例我就懒得写了,有bug你再报吧。反正不会修的。
其实perl版我也不会写
最近在看Ocaml
我就写个Ocaml版的吧 (算是给自己加点动力)
不过我不知道多久能完成 (从沙漠里建海洋还是有难度的)
其实我是想建绿洲的
不论过程如何
楼主的问题应该算是解决了吧
光顾着欣赏各位交流了,感谢各位大牛,目前解决了,还没遇到什么特别情况,有问题及时上来反馈。
再次感谢。
设计模式 我能想到的 可以能应用到这里的有
策略 装饰 状态机
如果再加一个需求
第一个子句,第二个子句,第三个子句。
如果想给前两个子句加[],而跳过第三个,你要怎么做。