「曾经沧海难为水,中英不空眼睛痛」,每当看到文字没对齐、段落没缩排或者中文字遇英文字不加空白,就会感到焦虑。笔者虽然努力的想忽略,但还是被过去的职业病所困扰,想马上把滑鼠点过去帮他编辑。
VScode 有 Prettier 可以做到自动排版,我却还不会用程序帮别人加空白,想到这不禁潸然泪下。
来,今天就来做这件事。
进入主题,这几天写 String methods 跟正规表达式发现似乎可以把加空白这件事情结合在一起。於是就开始找 RegExp 的字元类别(character classes),也就是上一篇尾端有简单介绍的,原本想好好介绍的但抱歉实在太多了
除了特殊字元,还有很多代表的符号列如一些较常用的:
x|y
符合 x 或 y,用|
分隔字符,可以像这样 w|x|y|z,一直或或或或或下去。
\d
符合数字 0-9
\s
符合空白
\w
符合数字跟字母与底线[A-Za-z0-9_]
先写出会换置的 code,在 indesign 里的写法是 (?<=~K)(\d|[\l\u])
,意即英文或数字左边若为中字。
(?<=)
左合样
\d
数字 0-9
|
或
[\l\u]
英文大小写 [A-Za-z]
第二行是(\d|[\l\u])(?=~K)
,跟上段相同只是换成右合样(?=)
准备好开始到 Javascript 改写~
[\u4e00-\u9fa5]
依照自己目前涉略的部分,JS 似乎只能用\u****
来代表某中字,没有全中文字元这个字元类别,所以 google 到一个能代表中文范围的方式。
\w
如前篇所说,代表 ASCII 字元,等同於[A-Za-z0-9_]。
所以生成下面的 regexp:
var re1 = /([\u4e00-\u9fa5])(\w+)/gi;
// /括号1($1)左合样中文括号2($2)英数字/ gi是不区分大小写
var re2 = /(\w+)([\u4e00-\u9fa5])/gi;
// /括号1($1)英数字,括号2($2)右合样中文/ gi是不区分大小写
var str2 = "JavaScript是Web的主要语言。近25";
var newstr2 = str2.replace(re, " $1 ");
console.log(newstr2);
天啊!成功加空白啦!!!(codepen 实作连结:中英空分生成器)
↓↓↓↓↓↓操作过程↓↓↓↓↓↓
从今天开始好好的加空白吧~
十年前曾在作文簿写下,「尽自己的力量,让世界有一点不一样」眼泛泪光,觉得欣慰。
MDN-正规表达式
wiki-正规表示式
前端藏宝图系列 第 6 篇 深不可测的海 - Regular Expression
郑RayLider
>>: 用React刻自己的投资Dashboard Day29 - 替股票加上名称
那今天就来让这个非同步资料透过MobX 来串接到画面上: 首先一样建立一个 UsersViewMod...
前言 抱歉打扰了XD 但是我真的太想来分享,所以还是厚着脸皮(?)来po文了XD 我这次有参加铁人赛...
Rate Limits Rate Limits主要功能是防止request过量打爆服务,当同一来源的...
今天主要要来在app内简易的嵌入一个网页(webview),webview不包含网路浏览器的所有功能...
前言: 今天我们要来完成前面提到的Sidebar,我会从Navbar接着开始接着讲,那就让我们开始...