将字符串转换为首字母大写-Emacs Lisp

时间:2018-07-17 23:15:41

标签: string emacs title-case

我正在寻找一个elisp函数,该函数接受一个字符串并以标题大小写返回相同的单词(即,所有单词都大写,除了“ a”,“ an”,“ on”,“ the”等)。

我发现this script,它需要标记区域。

仅,我需要一个接受字符串变量的函数,因此可以将其与replace-regex一起使用。我希望看到上述脚本的一个版本,它可以接受或...

3 个答案:

答案 0 :(得分:3)

像这样吗?

C:\Users\name>npm install mysql

npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\name\package.json'

npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\name\package.json'

npm WARN name No description

npm WARN name No repository field.

npm WARN name No README data

npm WARN name No license field.

mysql@2.15.0
updated 1 package in 0.519s

答案 1 :(得分:1)

我想说,您链接的脚本在标题框方面做得很好。您可以按原样使用它。

这给我们留下了两个问题:

  • 如何使它接受字符串?
  • 我们如何编写一个既可以接受字符串也可以接受(标记)区域的函数?

在Emacs中使用字符串通常是在未显示的临时缓冲区中完成的。您可以这样编写包装器:

(defun title-capitalization-string (s)
  (with-temp-buffer
    (erase-buffer)
    (insert s)
    (title-capitalization (point-min)
                          (point-max))
    (buffer-substring-no-properties (point-min)
                                    (point-max))))

现在,对于一个神奇地执行您想要的功能的函数,请考虑以下内容:

(defun title-capitalization-dwim (&optional arg)
  (interactive)
  (cond
   (arg
    (title-capitalization-string arg))
   ((use-region-p)
    (title-capitalization-string
     (buffer-substring-no-properties (region-beginning)
                                     (region-end))))
   (t
    (title-capitalization-string
     (buffer-substring-no-properties (point-at-bol)
                                     (point-at-eol))))))

它接受一个可选参数,或一个活动区域,或退回到当前行上的文本。请注意,此功能在交互使用时并没有真正有用,因为它不会显示任何效果。帽子提示也指向https://www.emacswiki.org/emacs/titlecase.el

许可证

除了站点的默认许可证之外,我还将所有这些代码置于Apache License 2.0和GPL 2.0(或更高版本)下。

答案 2 :(得分:0)

使用const { JSDOM } = require("jsdom"); const puppeteer = require('puppeteer') const urls = ['fake.com/link-1', 'fake.com/link-2', 'fake.com/link-3'] urls.forEach(async url => { let dom = new JSDOM(await makeRequest(url)) console.log(dom.window.document.title) }); async function makeRequest(url) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url); let html = await page.content() await browser.close(); return html }

  

M-x是‘C   源代码”。

     

upcase-initials-region BEG END

     

将区域中每个单词的首字母大写。这意味着每个   单词的第一个字符将转换为大写或大写   情况,其余的保持不变。在程序中,给两个   参数,要操作的开始和结束字符位置。