UNPKG

7.65 kBJavaScriptView Raw
1"use strict";
2/**
3 * String 对象扩展
4 */
5/**
6 * 判断字符串是否存在
7 *
8 * @param str 子字符串
9 * @return boolean
10 */
11String.prototype.exists = function (str) {
12 return this.indexOf(str) >= 0;
13};
14/**
15 * 判断字符串是否相等
16 *
17 * @param str 与此 String 进行比较的对象
18 * @return boolean
19 */
20String.prototype.equals = function (str) {
21 return Object.isUndefinedOrNull(str) == false && this === str;
22};
23/**
24 * 判断字符串是否相等,不考虑大小写
25 *
26 * @param str 与此 String 进行比较的对象
27 * @return boolean
28 */
29String.prototype.equalsIgnoreCase = function (str) {
30 return str !== undefined && str !== null && this.toLowerCase() === str.toLowerCase();
31};
32/**
33 * 判断是否为空字符串
34 *
35 * @return boolean
36 */
37String.prototype.isEmpty = function () {
38 return this.length === 0;
39};
40/**
41 * 判断是否不为空字符串
42 *
43 * @return boolean
44 */
45String.prototype.isNotEmpty = function () {
46 return this.length > 0;
47};
48/**
49 * 判断是否为空白字符串
50 *
51 * @return boolean
52 */
53String.prototype.isBlank = function () {
54 return /^\s*$/.test(this.toString());
55};
56/**
57 * 重复一个字符串
58 *
59 * @papram count 重复次数
60 * @return 重复后的字符串
61 */
62String.prototype.repeat = function (count) {
63 if (count < 1) {
64 return "";
65 }
66 else {
67 var s = this.toString();
68 var result = s;
69 for (var i = 0; i < count; i++) {
70 result += s;
71 }
72 return result;
73 }
74};
75/**
76 * 截取字符串左边边指定数目的字符串
77 *
78 * @param length 截取长度
79 * @return 子字符串
80 */
81String.prototype.left = function (length) {
82 return this.substring(0, length);
83};
84/**
85 * 截取字符串右边指定数目的字符串
86 *
87 * @param length 截取长度
88 * @return 子字符串
89 */
90String.prototype.right = function (length) {
91 return this.substring(this.length - length, this.length);
92};
93/**
94 * 截取字符串,超出部分用 truncation 替代
95 *
96 * @param length 截取长度
97 * @param truncation 替换字符串
98 * @return 截取后的字符串
99 * 实际截取长度:当 length 小于等于 truncation 的长度时为,length;当 length 大于 truncation 的长度时为,length - truncation.length
100 */
101String.prototype.truncation = function (length, truncation) {
102 if (truncation === void 0) { truncation = '...'; }
103 truncation = truncation || "...";
104 return this.length > length ? this.slice(0, length <= truncation.length ? length : length - truncation.length) + truncation : String(this);
105};
106/**
107 * 删除字符串开头的空白字符
108 *
109 * @return 删除了字符串最左边的空白字符的字符串
110 */
111String.prototype.ltrim = function () {
112 return Object.isFunction(this.trimStart) ? this.trimStart() : this.replace(/^\s*/g, "");
113};
114/**
115 * 删除字符串结尾的空白字符
116 *
117 * @return 删除了字符串最右边的空白字符的字符串
118 */
119String.prototype.rtrim = function () {
120 return Object.isFunction(this.trimEnd) ? this.trimEnd() : this.replace(/\s*$/g, "");
121};
122/**
123 * 判断字符串是否以给定的字符串开头
124 *
125 * @param str 搜索的字符串
126 * @return boolean
127 */
128String.prototype.startsWith = function (str) {
129 return this.indexOf(str) === 0;
130};
131/**
132 * 判断字符串是否以给定的字符串结尾
133 *
134 * @param str 搜索的字符串
135 * @return boolean
136 */
137String.prototype.endsWith = function (str) {
138 var d = this.length - str.length;
139 return d >= 0 && this.lastIndexOf(str) === d;
140};
141/**
142 * 首字母小写
143 *
144 * @return 结果字符串
145 */
146String.prototype.lcfirst = function () {
147 return this.charAt(0).toLowerCase() + this.substring(1);
148};
149/**
150 * 首字母大写
151 *
152 * @return 结果字符串
153 */
154String.prototype.ucfirst = function () {
155 return this.charAt(0).toUpperCase() + this.substring(1);
156};
157/**
158 * 将 HTML 编码
159 *
160 * @return 编码后的字符串
161 */
162String.prototype.escapeHTML = function () {
163 return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
164};
165/**
166 * 将 HTML 实体字符解码
167 *
168 * @return 解码后的字符串
169 */
170String.prototype.unescapeHTML = function () {
171 return this.replace(/&quot;/g, '"').replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
172};
173/**
174 * 删除 HTML 标签
175 *
176 * @param tag HTML 标签
177 * @returns 删除标签后的字符串
178 */
179String.prototype.stripTag = function (tag) {
180 return this.replace(new RegExp("<" + tag + "(\\s+(\"[^\"]*\"|'[^']*'|[^>])+)?(\/)?>|<\/" + tag + ">", "gi"), "");
181};
182/**
183 * 批量删除 HTML 标签
184 *
185 * @param tags 删除指定的标签
186 * @return 删除标签后的字符串
187 */
188String.prototype.stripTags = function (tags) {
189 if (typeof tags === "string") {
190 return this.stripTag(tags);
191 }
192 else if (Array.isArray(tags)) {
193 var result = this.toString();
194 for (var i = 0; i < tags.length; i++) {
195 result = result.stripTag(tags[i]);
196 }
197 return result;
198 }
199 else {
200 return this.toString();
201 }
202};
203/**
204 * 删除 script 标签
205 *
206 * @return 删除 script 标签后的字符串
207 */
208String.prototype.stripScripts = function () {
209 return this.replace(/<script[^>]*>([\S\s]*?)<\/script>/img, "");
210};
211/**
212 * 将字符串转换为数组
213 *
214 * @param delimiter 分隔字符
215 * @return 数组
216 */
217String.prototype.toArray = function (delimiter) {
218 return this.split(delimiter || "");
219};
220/**
221 * 返回一个数组的字符串表示形式
222 *
223 * @param useDoubleQuotes 是否使用双引号引住
224 * @return 后的字符串
225 */
226String.prototype.inspect = function (useDoubleQuotes) {
227 var specialChar = { '\b': '\\b', '\t': '\\t', '\r': '\\r', '\n': '\\n', '\f': '\\f', '\\': '\\\\' };
228 var escapedString = this.replace(/[\x00-\x1f\\]/g, function (character) {
229 if (character in specialChar) {
230 return specialChar[character];
231 }
232 return '\\u00' + character.charCodeAt(0).toPaddedString(2, 16);
233 });
234 if (useDoubleQuotes) {
235 return '"' + escapedString.replace(/"/g, '\\"') + '"';
236 }
237 else {
238 return "'" + escapedString.replace(/'/g, '\\\'') + "'";
239 }
240};
241/**
242 * 获取字符串 hash code
243 *
244 * @return 字符串 hash code
245 */
246String.prototype.hashCode = function () {
247 var result = 0;
248 if (result === 0 && this.length > 0) {
249 for (var i = 0; i < this.length; i++) {
250 result = 31 * result + this.charCodeAt(i);
251 }
252 }
253 return result;
254};
255/**
256 * 生成随机字符串
257 *
258 * @param length 生成字符串的长度
259 * @param type 生成类型
260 * NUMERIC - 数字随机字符串
261 * LETTER - 英文随机字符串
262 * LETTER_NUMERIC - 英文数字混合随机字符串
263 * CHINESE - 中文随机字符串
264 *
265 * @return 生成结果
266 */
267String.random = function (length, type) {
268 if (type === void 0) { type = "LETTER_NUMERIC"; }
269 var result = "";
270 if (type === "CHINESE") {
271 for (var i = 0; i < length; i++) {
272 result += String.fromCharCode(Math.rand(19968, 40891));
273 }
274 return result;
275 }
276 var numeric = "0123456789";
277 var letter = "abcdefghijklmnopqrstuvwxyz";
278 var map = {
279 "NUMERIC": numeric,
280 "LETTER": letter + letter.toUpperCase(),
281 "LETTER_NUMERIC": numeric + letter + letter.toUpperCase()
282 };
283 if (!map[type]) {
284 throw "Invalid argument type value, must be: NUMERIC, LETTER, LETTER_NUMERIC or CHINESE";
285 }
286 for (var j = 0; j < length; j++) {
287 result += map[type].charAt(Math.rand(0, map[type].length - 1));
288 }
289 return result;
290};
291//# sourceMappingURL=string.js.map
\No newline at end of file