`
xiaozhi7616
  • 浏览: 195903 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dojo笔记03 - 字符串处理

    博客分类:
  • Dojo
阅读更多

 

字符串处理方法

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: String, size: Integer, ch: String?, end: Boolean?): String

 

该方法传入四个参数:
  1. test,要被补齐的字符串
  2. size,补齐后字符串的长度
  3. ch,可选,用来补齐的字符,默认是“0”
  4. end,可选,true,在给定字符串的后面补齐"Dojo++++++",false,在前面补齐"++++++Dojo"
返回值是 String 类型,API中的例子:
// 把一个字符串用“+”在右边补全十位, 如 "Dojo++++++".
dojo.string.pad("Dojo", 10, "+", true);
 
 
dojo.string.rep(str: String, num: Integer): String
 
参数:
  1. str,要重复的字符串
  2. num,重复的次数
例子:
var rep = dojo.string.rep("Dojo", 5);
console.log("rep -- " + rep);
 
结果:DojoDojoDojoDojoDojo
 
很简单吧,继续看下一个最最常用的trim方法
 
 
dojo.string.trim(str: String): String
 
trim方法实在太常用,就不多说了,而且Dojo已经把它当作了一个最基本的方法,直接用 dojo.string.trim(str) 就好了。
 
在Dojo的API中提到这个版本的trim方法来自于Steven Levithan’s blog,在他的Blog中详细的分析了JavaScript中各个版本 trim 方法的效率, 有兴趣的可以深入研究一下。
 
 
dojo.string.substitute(template: String, map: Object|Array, transform: Function?, thisObject: Object?)
 
参数:
  1. template,模版,可以统一输出样式的字符串
  2. map,参数的map,可以是字符串,也可以是键值对,而且键值对可以嵌套使用
  3. transform,可选,被封装的一个方法,会遍历传进来的map中的字符串,然后执行相应的操作,常被用来生成模版时使用
  4. 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

    Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...

    struts2-dojo-plugin-2.3.4 jar

    struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载

    dojo精品中文教程(包一)

    dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...

    dojo精品中文教程(包二)

    dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...

    dojo精品中文教程(全)

    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-release-1.4.2-src.tar.gz"是一个特定版本的Dojo Toolkit源码压缩包,属于JavaScript库的范畴。Dojo Toolkit是一个强大的、开源的JavaScript库,广泛用于构建富互联网应用程序(RIA)。这个版本是...

    dojo精品中文教程(包三)

    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-release-1.6.1-src.zip" 指的是 Dojo 框架的一个源码版本,这是在2011年发布的1.6.1版本。Dojo 是一个广泛使用的JavaScript库,它提供了丰富的功能和工具,帮助开发者构建高性能、可维护的Web应用程序。...

    struts2-dojo-plugin-2.1.8.jar

    struts2-dojo 跨域时解决拒绝访问的问题

    dojo-release-1.10.4

    7. **国际化和本地化**:Dojo支持多语言环境,`dojo/i18n`模块处理字符串资源和本地化设置,`dojo/locale`获取用户浏览器的区域设置。 8. **工具和构建系统**:Dojo有强大的构建工具`build system`,可以进行模块...

    dojo-release-1.4.3

    标题"dojo-release-1.4.3"揭示了我们讨论的是Dojo框架的一个特定版本——1.4.3。这个版本发布于2010年,尽管现在已经有了更新的版本,但1.4.3仍然被许多项目广泛使用,因为它稳定且支持众多特性。 Dojo的核心特性...

    dojo-0.3.1-ajax

    "dojo-0.3.1-ajax" 是一个与Dojo JavaScript库相关的版本,特别是涉及到其 AJAX(Asynchronous JavaScript and XML)功能的版本。Dojo是一个开源的JavaScript工具包,为Web开发提供了丰富的功能,包括DOM操作、动画...

    dojo-release-1.9.1-src

    本压缩包"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.1.2.jar

    struts2-dojo-plugin-2.3.8

    struts2-dojo-plugin-2.3.8

    struts2-dojo-plugin-2.3.24

    struts2-dojo-plugin-2.3.24日期控件9-12月乱码解决后jar包

    dojo-release-1.9.0-src.zip dojo javascript库源码

    在"dojo-release-1.9.0-src.zip"这个压缩包中,我们获取的是Dojo 1.9.0版本的源码,这对于开发者深入理解Dojo的工作原理、定制组件以及优化性能有着极高的价值。 首先,Dojo的核心概念是模块化。它采用了AMD...

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug

    dojo-release-1.6.0-src

    dojo是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets,Burstlib,f(m)),这也是为什么叫它a"unified"toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些,长期...

Global site tag (gtag.js) - Google Analytics