字符串处理方法
1.3版本的 dojo.string 类中的方法非常精简,源代码只有50多行,直接看源代码吧,清楚一些
if (!dojo._hasResource["dojo.string"]) {
dojo._hasResource["dojo.string"] = true;
dojo.provide("dojo.string");
//rep是repeat的缩写,有效的重复一个字符串N次,生成由同一字符(串)重复组成的字符串
dojo.string.rep = function(_1, _2) {
if (_2 <= 0 || !_1) {
return "";
}
var _3 = [];
for (;;) {
if (_2 & 1) {
_3.push(_1);
}
if (!(_2 >>= 1)) {
break;
}
_1 += _1;
}
return _3.join("");
};
//使用字符补齐字符串
dojo.string.pad = function(_4, _5, ch, _7) {
if (!ch) {
ch = "0";
}
var _8 = String(_4), _9 = dojo.string.rep(ch, Math
.ceil((_5 - _8.length) / ch.length));
return _7 ? _8 + _9 : _9 + _8;
};
//参数化的替换一个字符串
dojo.string.substitute = function(_a, _b, _c, _d) {
_d = _d || dojo.global;
_c = (!_c) ? function(v) {
return v;
} : dojo.hitch(_d, _c);
return _a.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, function(
_f, key, _11) {
var _12 = dojo.getObject(key, false, _b);
if (_11) {
_12 = dojo.getObject(_11, false, _d).call(_d, _12, key);
}
return _c(_12, key).toString();
});
};
//去掉字符串的空白字符
dojo.string.trim = String.prototype.trim ? dojo.trim : function(str) {
str = str.replace(/^\s+/, "");
for (var i = str.length - 1; i >= 0; i--) {
if (/\S/.test(str.charAt(i))) {
str = str.substring(0, i + 1);
break;
}
}
return str;
};
}
来看一下它们的用法:
dojo.string.pad(text, size, ch, end): String
该方法传入四个参数:
-
test,要被补齐的字符串
-
size,补齐后字符串的长度
-
ch,可选,用来补齐的字符,默认是“0”
-
end,可选,true,在给定字符串的后面补齐"Dojo++++++",false,在前面补齐"++++++Dojo"
返回值是 String 类型,API中的例子:
// 把一个字符串用“+”在右边补全十位, 如 "Dojo++++++".
dojo.string.pad("Dojo", 10, "+", true);
dojo.string.rep(str, num): String
参数:
-
str,要重复的字符串
-
num,重复的次数
例子:
var rep = dojo.string.rep("Dojo", 5);
console.log("rep -- " + rep);
结果:DojoDojoDojoDojoDojo
很简单吧,继续看下一个最最常用的trim方法
dojo.string.trim(str): String
trim方法实在太常用,就不多说了,而且Dojo已经把它当作了一个最基本的方法,直接用 dojo.string.trim(str) 就好了。
dojo.string.substitute(template, map, transform, thisObject)
参数:
-
template,模版,可以统一输出样式的字符串
-
map,参数的map,可以是字符串,也可以是键值对,而且键值对可以嵌套使用
-
transform,可选,被封装的一个方法,会遍历传进来的map中的字符串,然后执行相应的操作,常被用来生成模版时使用
-
thisObject,可选,
API中的例子:
举例1
// returns "File 'foo.html' is not found in directory '/temp'."
dojo.string.substitute(
"File '${0}' is not found in directory '${1}'.",
["foo.html","/temp"]
);
// also returns "File 'foo.html' is not found in directory '/temp'."
dojo.string.substitute(
"File '${name}' is not found in directory '${info.dir}'.",
{ name: "foo.html", info: { dir: "/temp" } }
);
举例2
//用一个转换方法来修改 值
// returns "file 'foo.html' is not found in directory '/temp'."
dojo.string.substitute(
"${0} is not found in ${1}.",
["foo.html","/temp"],
function(str){
// try to figure out the type,以"/"开始就是"directory",否则就是 "file"
var prefix = (str.charAt(0) == "/") ? "directory": "file";
return prefix + " '" + str + "'";
}
);
输出结果是:file 'foo.html' is not found in directory '/temp'. 这里的directory是通过transform方法计算得出的,通过这个例子可以理解transform方法如何使用。
举例3
use a formatter
// returns "thinger -- howdy"
dojo.string.substitute(
"${0:postfix}", ["thinger"], null, {
postfix: function(value, key){
return value + " -- howdy";
}
}
);
在模版 ${0:postfix} 中,map列表的参数只能替代0位置上占位符,而“postfix”是由第四个参数对象来处理的,在第四个参数中定义了一个方法,其中把map中的值作为参数传递进来,然后对其进行操作,这个过程稍微有些复杂,不是很容易理解,尤其是第三、第四个参数都会将map中的变量进行处理。
字符串的连接
在JavaScript中,通常使用“+”或者“+=”来连接字符串,如果字符串连接操作使用频繁,我们可以考虑通过数组的join方式来实现,这样的效率会更高。直接看代码吧
var strs = ["abc","def","ghi"];
var str = strs.join();
console.log("strs.join() -- " + str);
var sperator = "";
str = strs.join(sperator);
console.log(sperator + " -- " + str);
sperator = "123";
str = strs.join(sperator);
console.log(sperator + " -- " + str);
sperator = "+";
str = strs.join(sperator);
console.log(sperator + " -- " + str);
输出结果:
-
直接使用join()方法每个数组元素之间会用“,”隔开
-
使用join(""),每个数组元素会无缝的连接起来,通常这种方式比较实用
-
在join()方法里面定义不同的分隔符,分隔符将被插入到各个数组元素之间
- 大小: 1.3 KB
分享到:
相关推荐
Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...
dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...
dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...
标题中的"dojo-release-1.4.2-src.tar.gz"是一个特定版本的Dojo Toolkit源码压缩包,属于JavaScript库的范畴。Dojo Toolkit是一个强大的、开源的JavaScript库,广泛用于构建富互联网应用程序(RIA)。这个版本是...
dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...
标题 "dojo-release-1.6.1-src.zip" 指的是 Dojo 框架的一个源码版本,这是在2011年发布的1.6.1版本。Dojo 是一个广泛使用的JavaScript库,它提供了丰富的功能和工具,帮助开发者构建高性能、可维护的Web应用程序。...
struts2-dojo 跨域时解决拒绝访问的问题
7. **国际化和本地化**:Dojo支持多语言环境,`dojo/i18n`模块处理字符串资源和本地化设置,`dojo/locale`获取用户浏览器的区域设置。 8. **工具和构建系统**:Dojo有强大的构建工具`build system`,可以进行模块...
标题"dojo-release-1.4.3"揭示了我们讨论的是Dojo框架的一个特定版本——1.4.3。这个版本发布于2010年,尽管现在已经有了更新的版本,但1.4.3仍然被许多项目广泛使用,因为它稳定且支持众多特性。 Dojo的核心特性...
"dojo-0.3.1-ajax" 是一个与Dojo JavaScript库相关的版本,特别是涉及到其 AJAX(Asynchronous JavaScript and XML)功能的版本。Dojo是一个开源的JavaScript工具包,为Web开发提供了丰富的功能,包括DOM操作、动画...
本压缩包"dojo-release-1.9.1-src"包含了Dojo 1.9.1版本的源代码,对于开发者来说,深入理解其内部结构和工作原理具有极高的价值。 1. **模块化设计** Dojo Toolkit遵循AMD(Asynchronous Module Definition)规范...
struts2-dojo-plugin-2.3.1.2.jar
struts2-dojo-plugin-2.3.8
struts2-dojo-plugin-2.3.24日期控件9-12月乱码解决后jar包
在"dojo-release-1.9.0-src.zip"这个压缩包中,我们获取的是Dojo 1.9.0版本的源码,这对于开发者深入理解Dojo的工作原理、定制组件以及优化性能有着极高的价值。 首先,Dojo的核心概念是模块化。它采用了AMD...
struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug
dojo是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets,Burstlib,f(m)),这也是为什么叫它a"unified"toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些,长期...