`
朱嘉华
  • 浏览: 236231 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript类型转换

    博客分类:
  • js
阅读更多
2008年05月11日 星期日 09:54

虽然 JavaScript 有很多用处,但是处理字符串是其中最流行的一个。下面让我们深入地分析一下使用 JavaScript 操作字符串。在 JavaScript 中, String 是对象。 String 对象并不是以字符数组的方式存储的,所以我们必须使用内建函数来操纵它们的值。这些内建函数提供了不同的方法来访问字符串变量的内容。下面我们详细看一下这些函数。

包罗万象

操作字符串的值是一般的开发人员必须面临的家常便饭。操作字符串的具体方式有很多,比如说从一个字符串是提取出一部分内容来,或者确定一个字符串是否包含一个特定的字符。下面的 JavaScript 函数为开发人员提供了他们所需要的所有功能:

? concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。

? indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。

? charAT() – 返回指定位置的字符。

? lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。



? match() – 检查一个字符串是否匹配一个正则表达式。

? substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。

? replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。

? search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。

? slice() – 提取字符串的一部分,并返回一个新字符串。

? split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。

? length() – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。

? toLowerCase() – 将整个字符串转成小写字母。

? toUpperCase() – 将整个字符串转成大写字母。

注意: concat 、 match 、 replace 和 search 函数是在 JavaScript 1.2 中加入的。所有其它函数在 JavaScript 1.0 就已经提供了。

下面让我们看一下如何在 JavaScript 使用这些函数。下面的代码是用到了前面提到的所有函数:

function manipulateString(passedString1, passedString2) {

var concatString;

// The string passed to concat is added to the end of the first string

concatString = passedString1.concat(passedString2);

alert(concatString);

// The following if statement will be true since first word is Tony

if (concatString.charAt(3) == "y") {

alert("Character found!");

}

// The last position of the letter n is 10

alert("The last index of n is: " + concatString.lastIndexOf("n"));

// A regular e瓁pression is used to locate and replace the substring

var newString = concatString.replace(/Tony/gi,"General");

// The following yields Please salute General Patton

alert("Please salute " + newString);

// The match function returns an array containing all matches found

matchArray = concatString.match(/Tony/gi);

for (var i=0; i<matchArray.length;i++) {

alert("Match found: " + matchArray[i]);

}

// Determine if the regular e瓁pression is found, a –1 indicates no

if (newString.search(/Tony/) == -1) {

alert("String not found");

} else {

alert("String found.");

}

// Extract a portion of the string and store it in a new variable

var sliceString = newString.slice(newString.indexOf("l")+2,newString.length);

alert(sliceString);

// The split function creates a new array containing each value separated by a space

stringArray = concatString.split(" ");

for (var i=0; i<stringArray.length;i++) {

alert(stringArray[i];

}

alert(newString.toUpperCase());

alert(newString.toLowerCase());

}

下面是执行上面的代码得到的结果:

Tony Patton
Character Found!
The last index of n is: 10
Match found: Tony
Please salute General Patton
String not found
Patton
Tony
Patton
GENERAL PATTON
general patton

示例代码把所有这些提到的函数都用到了。

特殊字符

除了这些函数之外,还有很多的特殊字符可以用来表示关键的效果。这些特殊字符包括:

? \t – 跳格键

? \b – 退格 / 删除

? \r – 回车

? \n – 换行

? \f – 换页

特殊字符最常见的用途就是格式化输出。例如,你可能需要在输出中插入一个换行来正确地显示一个值。而且,在换行时也需要回车。在一些平台上,“ \n ”已经足够产生换行效果了,而在一些机器上要正确地显示一个换行则需要“ \r\n ”。下面的例子显示了在一个多行窗口上显示的特殊字符:

var output = null;
output = "Special Characters";
output += "\n";
output += "===============";
output += "\n";
output += "\\t - tab";
output += "\n";
output += "\\b - backspace/delete";
output += "\n";
output += "\\r - carriage return";
output += "\n";
output += "\\n - newline";
output += "\n";
output += "\\f - form feed";
output += "\n";
alert(output);


前面的例子使用加号来连接字符串,而没有使用 concat 函数。原因很简单,对于 concat 函数来说,每一个操作都需要一个新的变量;反之,我们这里用的这种方法则简单地扩展了原有的值,而不需要新的变量。而且,示例中使用换码符来正确地显示特殊字符。系统将一个反斜线当作一个信号,认为它后面会跟一个特殊字符,但是连着两个反斜线则抵消这种操作。输出中的每个字符都通过 newline 特殊字符被显示在新的一行。

添加到工具箱中

特殊字符和函数可以与其它 JavaScript 技巧结合起来解决很多问题。其中一种情况是用来进行 JavaScript 客户端表单验证,这篇文章中提出的方法可以简单地用来实现表单验证。

下面的代码将在一个表单被提交时调用。要提交的表单包含三个域:名称、地址和邮政编码。为了实现起来比较简单,我们只验证每个域都不能为空,并且邮政编码必须是数字。下面的 JavaScript 代码完成这一功能:

function validation() {

var doc = document.forms[0];

var msg = "";

if (doc.Name.value == "") {

msg += "- Name is missing\n";

}

if (doc.Address.value == "") {

msg += "- Address is missing\n";

}

if (doc.ZipCode.value == "") {

msg += "- Zip code is missing\n";

}

var zip = new String(doc.ZipCode.value);

if (zip.search(/^[0-9][0-9][0-9][0-9][0-9]$/)==-1) {

msg += "- Enter valid Zip code";

}

if (msg == "") {

doc.submit;

} else {

msg = "Please correct the following validation errors and re-submit:\n\n" + msg;

alert(msg);

}

}

在用户提交表单时,这个函数就会被调用。对函数的调用是在一个 HTML 按钮的 onSubmit 事件中实现的。

<input type="button" type="submit" value="submit" onClick="validation()">

验证函数检查每个域是否为空。如果发现了一个空值,那么就会在验证消息变量 msg 后面添加一个出错消息。此外,还使用了一个正则表达式来验证邮政编码域的格式。在这里,我们只接受五位数的美国地区邮政编码。如果发现有任何错误(即 msg 变量不为空),那么程序就会显示一个错误消息;否则的话,程序就会提交表单。

在JavaScript中 Number(int,double)和string的相互转换

 

在JavaScript中,Double类型和Int类型都是看作为Number对象,因此无论是typeof 1还是typeof 1.0,都是返回number。这样我们可以不用去管是Int还是Double类型,让JavaScript解释引擎内部去处理。

如果要把Number转换成String,可以使用Number的toString()方法,(象(1).toString()括号必须或者 1 .toString()空格必须,否则会编译出错,如果是变量则无需),或者调用String()函数,这两种方法都会自动调用解释引擎内部的 NumberToString(),或者根据进制调用其它函数,基本类似。
如果要把String转换成Number,可以使用Number()函数,他会自动判断String中是整数还是浮点数,然后内部使用相应的数据类型,另外可以使用全局函数parseInt()和parseFloat(),他们根据你的要求进行转换。同样的,他们在解释引擎内部机制上是使用了 StringToNumber,StringToInt等等内部的函数。
而如果是Double转换成Int,必须使用Math.floor()函数(截尾取整)或者Math.round()(四舍五入)
Int转换成Double,无须考虑任何问题,直接把Int当成Double进行运算

注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是作为构造函数调用还是普通调用,所以既可以使用new关键字,也可以作为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,现在由Mozilla组织维护

for(i=0;i<this.all.length;i++){
   vTotal+=Number(this.all[i].Value);
  
}
得出是数字的累加
不然成字符串连接了

分享到:
评论

相关推荐

    Javascript类型转换的规则实例解析

    JavaScript类型转换是编程中非常重要的一个概念,它描述了在运算过程中,不同数据类型之间的自动或手动转换行为。JavaScript语言是动态类型的,这意味着你可以在运行时改变变量所存储值的类型,而这正是类型转换的...

    Javascript的数据类型转换

    以下是对JavaScript中数据类型转换的详细说明: 1. `parseInt()` 函数:这个函数用于将字符串转化为整型。它会尝试解析字符串,从开头开始找到第一个数字,并将其转换为整数。如果字符串的第一位不是数字,`...

    一道面试题引发的对javascript类型转换的思考

    JavaScript中的类型转换是处理不同类型数据时需要进行的一种操作,它在编程中扮演着重要的角色。在JavaScript中,存在着多种类型,包括原始类型和对象类型。原始类型主要包括Number、String、Boolean、Undefined和...

    javascript类型转换使用方法

    JavaScript类型转换是一种编程技术,它涉及将变量从一种数据类型转换为另一种数据类型。这种技术在处理不同类型的数据时非常有用,尤其是在涉及到运算或比较操作的时候。在JavaScript中,类型转换可以分为显式转换和...

    Javascript 类型转换方法

    JavaScript 是一种动态类型语言,它的变量可以自由地转换成各种数据类型以适应不同的场景。由于JavaScript的弱类型特性,有时会导致意料之外的类型转换,尤其是涉及到数据类型的运算时。以下我们将详细介绍...

    javascript对象转换成json

    - `value`:要转换的JavaScript值,可以是对象、数组或其他基本类型。 - `replacer`(可选):一个函数或者一个数组,用来转换或过滤对象的属性值。如果函数被提供,对于每个对象的属性,都会调用这个函数,其返回值...

    javascript最常用数据类型转换(最全).doc

    JavaScript 数据类型转换详解 JavaScript 中有多种数据类型,包括数值类型、字符串类型、布尔类型等。这些类型之间可以进行转换,以下是 JavaScript 中最常用的数据类型转换方法。 一、转为字符串 在 JavaScript ...

    一篇文章搞定JavaScript类型转换(面试常见)

    其实啥类型转换啊,操作符优先级啊,这些东西都是最最基本的。犀牛书上有详细的介绍。但我很少去翻犀牛书的前5章。。。 比如说优先级那块儿,很多书都教育我们,“不用去背诵优先级顺序,不确定的话,加括号就行了。...

    Javascript 强制类型转换函数

    强制类型转换在JavaScript中是常见的,主要有三种主要的转换函数:`Boolean()`, `Number()`, 和 `String()`。 1. **Boolean(value)**: 这个函数将任何值转换为布尔类型(`true` 或 `false`)。通常,非零数字、非空...

    js类型转换js类型转换

    ### JavaScript 类型转换详解 #### 一、概述 JavaScript 是一种动态类型的语言,它支持多种数据类型之间的自动转换。在日常开发中,我们经常会遇到不同类型数据间的比较或运算,这时就需要进行类型转换。掌握好 ...

    javascript类型转换示例

    在JavaScript中,类型转换是一项经常被用到的技术,它是将数据从一种类型转换为另一种类型的过程。这项技术对于数据的处理和展示有着重要的作用。在本示例中,我们将详细探讨JavaScript中的类型转换技术,主要包含将...

    Javascript 类型转换、封闭函数及常见内置对象操作示例

    本文实例讲述了Javascript 类型转换、封闭函数及常见内置对象。分享给大家供大家参考,具体如下: Javascript组成 1、ECMAscript javascript的语法(变量、函数、循环语句等语法) 2、DOM 文档对象模型 操作html和...

    javascript各种变量类型之间的转换

    javascript各种变量类型之间的转换

    纯javascript实现json与对象的互相转换项目

    本项目专注于纯JavaScript实现JSON(JavaScript Object Notation)与JavaScript对象之间的互相转换,这对于数据的存储、传输以及序列化至关重要。JSON作为一种轻量级的数据交换格式,因其易读易写、机器可读性高而被...

    C# to JavaScript转换器

    综上所述,C#到JavaScript转换器,特别是SharpKit,为Web开发提供了一种创新的方式,它结合了C#的强类型和高级特性与JavaScript的广泛浏览器支持。通过使用这种工具,开发团队可以提高代码的可维护性和效率,同时...

    JavaScript隐式类型转换_.docx

    JavaScript中的隐式类型转换是其弱类型特性的重要体现,它允许不同数据类型的值在运算时进行自动转换,但这也可能导致一些意料之外的结果。在JavaScript中,数据类型包括字符串(String)、数字(Number)、布尔(Boolean...

    javascript字符型转换成整型

    在JavaScript编程语言中,字符型数据(通常指字符串类型)转换为整型数据是一项常见的操作需求,尤其是在处理用户输入、解析数据或进行数值计算时。本文将深入探讨如何利用JavaScript来实现这一转换,并在此过程中...

Global site tag (gtag.js) - Google Analytics