1、检查一个存在的、非空的字符串
问题:想要检查一个已经定义了的变量,是一个字符串,并且它不为空。
解决方案:
使用typeof运算符、通用的valueOf方法以及String length属性来创建一个条件测试,以确保一个变量是存在的,是一个字符串,并且不为空。
<script type="text/javascript"> // 如果变量存在,是一个字符串,并且其长度大于0,结果为真。 if (((typeof unknownVariable != "undefined") && (typeof unknownVariable.valueOf() == "string")) && unknownVariable.length > 0) { } </script>
讨论:
JavaScript typeof运算符返回一个变量的类型。可能的返回值如下:
◊ 如果变量是一个数字,返回“number”;
◊ 如果变量是一个字符串,返回“string”;
◊ 如果变量是一个布尔类型,返回“boolean”;
◊ 如果变量是一个函数,返回“function”;
◊ 如果变量是null、一个数组,或者其他的JavaScript对象,返回“object”;
◊ 如果变量未定义,返回“undefined”;
<script type="text/javascript"> // 如果变量存在,并且其长度大于0,结果为真。 if ((typeof unknownVariable !== "undefined") && unknownVariable.length > 0) { } </script>
valueOf方法对于所有的JavaScript对象都可用,并不管对象是什么,都返回其基本值。
2、处理textarea的单个行
<script type="text/javascript"> var txtBox = document.getElementById("inputbox"); var lines = txtBox.value.split("\n"); // 将最后一行打印到页面 var blk = document.getElementById("result"); blk.innerHtml = lines[lines.length - 1]; </script>
3、去除字符串末尾的空白
问题:需要去除从表单元素获取的一个字符串周围的空白。
解决方案:
使用最新的ECMAScript5 String trim方法:
<script type="text/javascript"> var txtKeyword = document.getElementById("txtKeyword").value.trim(); </script>
讨论:
在ECMAScript5发布之前,必须使用正则表达式和String replace()方法来去除掉一个字符串周围不需要的空白。
可供使用的替代方法,它不仅允许使用trim,而且如果trim不存在的话,它也是一种备用方案。
首先,在需要使用trim功能时,先测试trim是否作为String对象的一个属性存在。如果它不存在,需要使用String prototype给该对象添加一个定制的trim。
<script type="text/javascript"> if (typeof String.trim == "undefined") { String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.leftTrim = function () { return this.replace(/^\s+/, ""); } String.prototype.rightTrim = function () { return this.replace(/\s+$/, ""); } } var txtKeyword = document.getElementById("txtKeyword").value.trim(); </script>