首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在光标点生成一个随机的5 letter+number字符串.(全部小写)

在光标点生成一个随机的5 letter+number字符串.(全部小写)
EN

Stack Overflow用户
提问于 2016-05-04 21:33:42
回答 3查看 2K关注 0票数 5

我正在使用Emacs 24.5 (在空间中)。F2说,我希望只要按下一个键,就能在emacs中的游标所在的任何位置生成一个随机的5字符字符串。

一个典型的随机字符串是jb2nx,所有的字母都是小写的.在emacs启动时,随机数生成的种子值应该总是不同的,以便在下次打开时阻止emacs生成相同的随机字符串序列。

注:

我需要这个功能,在点插入一个独特的单词,使用它作为书签。通过这种方式,我可以打开包含来自操作模式的随机字符串的行。

代码语言:javascript
运行
复制
[[file:some-code-file::jb2nx][This line in the code-file]] 

将是我的Org文件中的一行。而jb2nx将放置在代码文件中所引用行的注释中。

我不想直接引用行号,在编辑代码文件时,行号可以更改。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-04 22:35:08

代码语言:javascript
运行
复制
(defun random-alnum ()
  (let* ((alnum "abcdefghijklmnopqrstuvwxyz0123456789")
         (i (% (abs (random)) (length alnum))))
    (substring alnum i (1+ i))))

(defun random-5-letter-string ()
  (interactive)
  (insert 
   (concat 
    (random-alnum)
    (random-alnum)
    (random-alnum)
    (random-alnum)
    (random-alnum))))

(global-set-key (kbd "<f2>") 'random-5-letter-string)
票数 9
EN

Stack Overflow用户

发布于 2016-05-05 01:27:20

虽然Brian的解决方案很好,但我个人更喜欢直接在缓冲区中工作,而不是生成中间字符串:

代码语言:javascript
运行
复制
(defun insert-random-five ()
  (interactive)
  (dotimes (_ 5)
    (insert
     (let ((x (random 36)))
       (if (< x 10) (+ x ?0) (+ x (- ?a 10)))))))
票数 3
EN

Stack Overflow用户

发布于 2020-03-21 17:16:26

扩展Brian的答案,如果您只需要一个随机字符串而不插入它,并且具有可配置的长度:

代码语言:javascript
运行
复制
(defun random-string (n)
  "Generate a slug of n random alphanumeric characters.

Inefficient implementation; don't use for large n."
  (if (= 0 n)
      ""
    (concat (random-alnum) (random-string (1- n)))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37038441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档