// ==UserScript== // @name 驼峰翻译助手 - 自动翻译为变量的大驼峰、小驼峰、短横线等命名格式(支持搜狗翻译、有道翻译、百度翻译) // @namespace http://tampermonkey.net/ // @version 0.1 // @description 平常开发取变量名的时候,经常要到翻译网站翻译,翻译结果又要手动转大驼峰、小驼峰、短横线,于是自己开发了一套油猴脚本,直接自动翻译成程序员常用的命名格式。 // @author Kai // @match https://www.tampermonkey.net/index.php?ext=dhdg // @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net // @grant none // @match *://fanyi.sogou.com/text* // @match *://fanyi.youdao.com/* // @match *://fanyi.baidu.com/* // @require http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js // @require https://unpkg.com/pxmu@1.1.0/dist/web/pxmu.min.js // ==/UserScript== (function () { 'use strict'; //===========================声明各种格式的策略对象========================================= //toCamelCase(‘it is word’) => ‘itIsWord’ function toLowerCamelCase(str) { if (!str) { return ''; } try { const s = str .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map((x) => x.slice(0, 1).toUpperCase() + x.slice(1).toLowerCase()) .join('') return s.slice(0, 1).toLowerCase() + s.slice(1) } catch (e) { return '解析异常' } } //console.log(camelize("Concurrent hash maps")) =》ConcurrentHashMaps function toPascalCase(str) { if (!str) { return ''; } try { //过滤字符串 return str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) //将每个单词的第一个字符转换为大写 .map(a => a[0].toUpperCase() + a.substring(1)) //将所有字符串重新连接在一起 .join("") } catch (e) { return '解析异常' } } //console.log(camelize("Concurrent hash maps")) =》concurrent-hash-maps function toKebabCase(str) { if (!str) { return ''; } try { let strList = str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) return strList.reduce((result, a, index) => { //将每个单词转换为小写 let suffix = index === strList.length - 1 ? '' : "-" result += a.toLowerCase() + suffix return result }, '') } catch (e) { return '解析异常' } } //console.log(camelize("Concurrent hash maps")) =》concurrent_hash_maps function toSnakeCase(str) { if (!str) { return ''; } try { let strList = str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) return strList.reduce((result, a, index) => { //将每个单词转换为小写 let suffix = index === strList.length - 1 ? '' : "_" result += a.toLowerCase() + suffix return result }, '') } catch (e) { return '解析异常' } } //console.log(camelize("Concurrent hash maps")) =》CONCURRENT_HASH_MAPS function toScreamingSnakeCase(str) { if (!str) { return ''; } try { let strList = str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) return strList.reduce((result, a, index) => { //将每个单词转换为大写 let suffix = index === strList.length - 1 ? '' : "_" result += a.toUpperCase() + suffix return result }, '') } catch (e) { return '解析异常' } } var whichNameType = { toLowerCamelCase: toLowerCamelCase, toPascalCase: toPascalCase, toKebabCase: toKebabCase, toSnakeCase: toSnakeCase, toScreamingSnakeCase: toScreamingSnakeCase } var currentWhichNameType = 'toLowerCamelCase' var whichNameHtml = `