-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhalfSpaceToHtml.js
More file actions
81 lines (72 loc) · 3.5 KB
/
halfSpaceToHtml.js
File metadata and controls
81 lines (72 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// 半角空格在html显示的转换处理
public static halfSpaceToHtml(half){
// 逻辑:白空格不能连续出现 并且 不能出现在两边
let eSp = / +$/.exec(half); // 查找出结尾要转换的空格
let newEndStr = '';
if (eSp && eSp[0] != '\n') { // 如果结尾有空格
let eSpStr = eSp[0];
if(eSpStr.length%2 ==0){ // 判断空格是否为偶数个
for (var i = 0; i < eSpStr.length; i++) { // 若为偶数个 则以白空格开头 防止白空格出现在结尾处被浏览器忽略
if(i%2 ==0){
newEndStr = newEndStr + ' ';
}else{
newEndStr = newEndStr + ' ';
}
}
}else{ // 空格为奇数个 则以nbsp开头 防止白空格出现在结尾处 被浏览器忽略
for (var i = 0; i < eSpStr.length; i++) {
if(i%2 ==0){
newEndStr = newEndStr + ' ';
}else{
newEndStr = newEndStr + ' ';
}
}
}
half = half.replace(/ +$/, ''); // 将结尾处空格去掉 newEndStr中存放显示用空格字符串
}
// half = half.replace(/[ ][ ]/g, ' '); // 剩余的连续空格nbsp转换
// --------------------------------------------------------------------------------------
let sSp = /^ +/.exec(half); // 查找出开头要转换的空格
let newStartStr = '';
if (sSp && sSp[0] != '\n') { // 如果开头有空格
let sSpStr = sSp[0];
for (var i = 0; i < sSpStr.length; i++) { // 以nbsp开头做空格转换 即防止白空格出现在开头处
if (i == 0) {
newStartStr = newStartStr + ' ';
}else{
if(i%2 ==0){
newStartStr = newStartStr + ' ';
}else{
newStartStr = newStartStr + ' ';
}
}
}
half = half.replace(/^ +/, ''); // 将开头处空格去掉 newStartStr中存放显示用空格字符串
}
// --------------------------------------------------------------------------------------
let patt = new RegExp(/ +/,"g"); // 查找中间部分连续空格
let sp;
// let newHalf = '';
while ((sp = patt.exec(half)) != null){ // 找到再也没有为止
// let noSpArr = half.split(/\s+/); //从第一个处切开
let noSp1 = half.substring(0,sp.index);
let noSp2 = half.substring(sp.index + sp[0].length, half.length);
let newStr = '';
if (sp) {
let spStr = sp[0];
for (var i = 0; i < spStr.length; i++) { // 转换为以nbsp开头的显示用空格字符串
if (i == 0) {
newStr = newStr + ' ';
}else{
if(i%2 ==0){
newStr = newStr + ' ';
}else{
newStr = newStr + ' ';
}
}
}
}
half = noSp1 + newStr + noSp2;
}
return newStartStr + half + newEndStr;
}