最近总结了一些关于string中的常用方法,
其中大部分的方法来自于《javascript框架设计》这本书,
如果有更好的方法,或者有关于string的别的常用的方法,希望大家不吝赐教。
第一部分:
字符串中查找,
包括一个字符串是否在另一个字符串内部,是否在开始之处,是否在结尾之处。
/**
* 判断一个字符串是否包含另一个字符串
* @param target
* @param it
* @returns {boolean}
*/
function contains(target,it) {
return target.indexof(it) !== -1;
}
/**
* 判定目标字符串是否位于原字符串的开始之处
* @param target
* @param str
* @param ignorecase 是否忽略大小写
* @returns {boolean}
*/
function startwith(target,str,ignorecase) {
const startstr = target.substr(0,str.length);
return ignorecase ? startstr.tolocalelowercase() === str.tolocalelowercase() :
startstr === str;
}
/**
* 判定目标字符串是否位于原字符串的结束之处
* @param target
* @param str
* @param ignorecase 是否忽略大小写
* @returns {boolean}
*/
function endwith(target,str,ignorecase) {
const startstr = target.substr(target.length - str.length);
return ignorecase ? startstr.tolocalelowercase() === str.tolocalelowercase() :
startstr === str;
}
第二部分:
字符串重复,
将一个字符串重复n次后返回
/**
* 重复字符串
* @param target 目标字符串
* @param n 次数
* @returns {string}
*/
function repeat(target,n) {
return (new array(n + 1)).join(target);
}
function repeat2(target,n) {
return array.prototype.join.call({
length: n + 1
},target);
}
function repeat3(target,n) {
let s = target,total = [];
while (n > 0) {
if (n % 2 == 1) {
// 如果是奇数
total[total.length] = s;
}
if (n === 1) {
break;
}
s += s;
// 将n除以2取其商,或说开二次方
n = n >> 1;
}
return total.join('');
}
function repeat4(target,n) {
if (n === 1) {
return target;
}
let s = this.repeat4(target,math.floor(n / 2));
s += s;
if (n % 2) {
s += target;
}
return s;
}
function repeat5(target,n) {
let s = target,c = s.length * n;
do {
s += s;
} while (n = n >> 1);
// 这样省去了判断奇偶数
s = s.substring(0,c);
return s;
}
/**
* 各个浏览器得分最好的
* @param target
* @param n
* @returns {string}
*/
function repeat6(target,n) {
let s = target,total = '';
while ( n > 0) {
if (n % 2 === 1) {
total += s;
}
if (n === 1) {
break;
}
s += s;
n = n >> 1;
}
return total;
}
第三部分:
字符串长度,
获取一个字符串的字节长度,并支持定制汉字的存储字节数
/**
* 取得一个字符串所有字节的长度
* @param target
* @returns {number}
*/
function bytelen(target) {
let bytelength = target.length,i = 0;
for(;i < target.length; i++) {
if (target.charcodeat(i) > 255) {
bytelength++;
}
}
return bytelength;
}
/**
* 使用正则,并支持定制汉字的存储字节数
* @param target
* @param fix
* @returns {number}
*/
function bytelen2(target,fix) {
fix = fix ? fix : 2;
const str = new array(fix + 1).join('-');
return target.replace(/[^\x00-\xff]/g,str).length;
}
第四部分:
字符串替换,
包括字符串截取替换,移除html中的一些标签,替换字符串中对html不安全的标签
/**
* 对字符串进行截断处理,当超过限定长度,默认添加三个点号或其他什么的
* @param target
* @param length
* @param truncation
* @returns {string}
*/
function truncate(target,length,truncation) {
length = length || 30;
truncation = truncation === void(0) ? '...' : truncation;
return target.length > length ?
target.slice(0,length - truncation.length) + truncation : string(target);
}
/**
* 移除字符串中的html标签
* @param target
* @returns {string}
*/
function striptags(target) {
return string(target || '').replace(/<[^>]+>/g,'');
}
/**
* 移除字符串中所有的script标签
* @param target
* @returns {string}
*/
function stripscripts(target) {
return string(target || '').replace(/<script[^>]*>([\s\s*?])<\/script>/img,'');
}
/**
* 将字符串经过html转义得到适合在页面显示的内容
* @param target
* @returns {string|xml}
*/
function escapehtml(target) {
return target.replace(/&/g,'&')
.replace(/</g,'<')
.replace(/>/g,'>')
.replace(/' '/g,'"')
.replace(/'/g,''');
}
第五部分:
字符串填充,
将特定的字符串填充到另一个字符串中,使得目标字符串得到相应的长度,包括向前填充和向后填充。
/**
* 获取n位数,不够的前面补0
* @param target
* @param n 位数
* @returns {string}
*/
function pad(target,n) {
const zero = new array(n).join('0');
const str = zero + target;
return str.substr(-n);
}
function pad2(target,n) {
let len = target.tostring().length;
while (len < n) {
target = '0' + target;
len++;
}
return target;
}
/**
* 支持多种填充,并可以选择填充的位置(前面或后面)
* @param target
* @param n
* @param filling
* @param right
* @param radix
* @returns {string}
*/
function pad8(target,n,filling,right,radix) {
var num = target.tostring(radix || 10);
filling = filling || '0';
while (num.length < n) {
if (!right) {
num = filling + num;
} else {
num += filling;
}
}
return num;
}
第六部分:
清除字符串前后的空格,
/**
* 去除字符串前后的空格
* @param str
* @returns {string|xml}
*/
function trim(str) {
return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');
}
function trim2(str) {
return str.replace(/^\s+/,'').replace(/\s+$/,'');
}
function trim3(str) {
return str.substring(math.max(str.search(/\s/),0),
str.search(/\s\s*$/) + 1);
}
function trim4(str) {
return str.replace(/^\s+|\s+$/g,'');
}
function trim5(str) {
str = str.match(/\s+(?:\s+\s+)*/);
return str ? str[0] : '';
}
function trim6(str) {
return str.replace(/^\s*(\s*(\s\s+)*)\s*$/,'$1');
}
function trim7(str) {
return str.replace(/^\s*(\s*(?:\s+\s+)*)\s*$/,'$1');
}
function trim8(str) {
return str.replace(/^\s*((?:[\s\s]*\s)?)\s*$/,'$1');
}
以上就是js中关于string的一些常用的方法详解的详细内容。