-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstring-helpers.js
More file actions
61 lines (53 loc) · 1.4 KB
/
string-helpers.js
File metadata and controls
61 lines (53 loc) · 1.4 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
function padLeft(number, digits) {
return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
};
function toHex(str) {
return (str+0).toString(16).toUpperCase();
};
function toHexNCR (argstr, enableFormatting ) {
var outputString = "";
argstr = argstr.replace(/^\s+/, '');
if (argstr.length == 0) { return ""; }
argstr = argstr.replace(/\s+/g, ' ');
var listArray = argstr.split(' ');
for ( var i = 0; i < listArray.length; i++ ) {
var n = parseInt(listArray[i], 16);
if (enableFormatting) {
outputString += '&#x' + toHex(n) + ';';
} else
outputString += padLeft(toHex(n), 4);
}
return (outputString);
};
// http://www.endmemo.com/unicode/unicodeconverter.php
String.prototype.toUnicodeSMS = function toUnicodeSMS () {
var str = String(this);
var haut = 0;
var n = 0;
var data = '';
var dataHex = '';
for (var i = 0; i < str.length; i++) {
var b = str.charCodeAt(i);
if (b < 0 || b > 0xFFFF) {
data += 'Error ' + toHex(b) + '!';
}
if (haut != 0) {
if (0xDC00 <= b && b <= 0xDFFF) {
dataHex = 0x10000 + ((haut - 0xD800) << 10) + (b - 0xDC00);
data += toHex(dataHex) + ' ';
haut = 0;
continue;
} else {
data += '!error ' + toHex(haut) + '!';
haut = 0;
}
}
if (0xD800 <= b && b <= 0xDBFF) {
haut = b;
} else {
data += toHex(b) + ' ';
}
}
data = data.substring(0, data.length-1);
return toHexNCR(data, false);
}