一、 数据类型转换
- 数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean [ˈbuliən])、对空(Null)、未定义(Undefined)、Symbol [ˈsɪmbəl]。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
- typeof和constructor
类型转换方法:Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。
ü typeof 操作符
使用 typeof 操作符来查看 JavaScript 变量的数据类型。
实例
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 没有声明)
typeof null // 返回 object
注意:
² NaN 的数据类型是 number
² 数组(Array)的数据类型是 object
² 日期(Date)的数据类型为 object
² null 的数据类型是 object
² 未定义变量的数据类型为 undefined
² 如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。
ü constructor 属性
constructor 属性返回所有 JavaScript 变量的构造函数。
"John".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
事例:
<p>判断是否为日期。</p>
<p id="demo"></p>
<script>
var myDate = new Date();
document.getElementById("demo").innerHTML = isDate(myDate);
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
</script>
- JavaScript 类型转换
二、 string字符串
- 语法
字符串字面量采取以下形式:
'string text'
"string text"
"中文/汉语"
也能使用 String 函数将其他值生成或转换成字符串:
String(thing)
new String(thing)
参数thing :任何可以被转换成字符串的值。
- 转义字符
除了普通的可打印字符以外,一些特殊有特殊功能的字符可以通过转义字符的形式放入字符串中:
Code |
Output |
\0 |
空字符 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
\n |
换行 |
\r |
回车 |
\v |
垂直制表符 |
\t |
水平制表符 |
\b |
退格 |
\f |
换页 |
\uXXXX |
unicode 码 |
\u{X} ... \u{XXXXXX} |
unicode codepoint |
\xXX |
Latin-1 字符(x小写) |
和其他语言不同,javascript 的字符串不区分单引号和双引号,所以不论是单引号还是双引号的字符串,上面的转义字符都能运行 。
- 长字符串
有时,你的代码可能含有很长的字符串。你可能想将这样的字符串写成多行,而不是让这一行无限延长或着被编辑器折叠。有两种方法可以做到这一点。
其一,可以使用 + 运算符将多个字符串连接起来,如下所示:
let longString = "This is a very long string which needs " + "to wrap across multiple lines because " + "otherwise my code is unreadable.";
其二,可以在每行末尾使用反斜杠字符(“\”),以指示字符串将在下一行继续。确保反斜杠后面没有空格或任何除换行符之外的字符或缩进; 否则反斜杠将不会工作。 如下所示:
let longString = "This is a very long string which needs \to wrap across multiple lines because \otherwise my code is unreadable.";
使用这两种方式会创建相同的字符串。
字符串对于保存可以以文本形式表示的数据非常有用。 一些常用的字符串操作有:查询字符串长度,使用 + 和 += 运算符来构建和连接字符串,使用 indexOf 方法检查某一子字符串在父字符串中的位置,又或是使用 substring 方法提取从父字符串中提取子字符串。
- 从字符串中获取单个字符
获取字符串的某个字符有两种方法。 第一种是使用 charAt 方法:
return 'cat'.charAt(1); // returns "a"
另一种 (在ECMAScript 5中有所介绍) 是把字符串当作一个类似数组的对象,其中的每个字符对应一个数值索引:
return 'cat'[1]; // returns "a"
使用括号访问字符串不可以对其进行删除或添加,因为字符串对应未知的属性并不是可读或配置的。
- 字符串比较
在 JavaScript 中,只需要使用比较操作符(>/</>=/<=):
var a = "a";
var b = "b";
if (a < b) // true
print(a + " is less than " + b);
else if (a > b)
print(a + " is greater than " + b);
else
print(a + " and " + b + " are equal.");
使用从字符串实例继承而来的 localeCompare 方法也能达到同样的效果。
- 字符串对象
通常, JavaScript 字符串是原始值,可以使用字符创建: var firstName = "John"
但我们也可以使用 new 关键字将字符串定义为一个对象: var firstName = new String("John")
var x = "John";
var y = new String("John");
typeof x // 返回 String
typeof y // 返回 Object
注意:尽量不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用。
利用 valueOf 方法,我们可以将字符串对象转换为其对应的基本字符串。
console.log(eval(s2.valueOf())); // returns the number 4
- 字符串对象属性
属性 描述
constructor 返回创建字符串属性的函数
length 返回字符串的长度
prototype 允许您向对象添加属性和方法
- 字符串方法
方法 |
描述 |
charAt() |
返回指定索引位置的字符 |
charCodeAt() |
返回指定索引位置字符的 Unicode 值 |
concat() |
连接两个或多个字符串,返回连接后的字符串 |
fromCharCode() |
将 Unicode 转换为字符串 |
indexOf() |
返回字符串中检索指定字符第一次出现的位置 |
lastIndexOf() |
返回字符串中检索指定字符最后一次出现的位置 |
localeCompare() |
用本地特定的顺序来比较两个字符串 |
match() |
找到一个或多个正则表达式的匹配 |
replace() |
替换与正则表达式匹配的子串 |
search() |
检索与正则表达式相匹配的值 |
slice() |
提取字符串的片断,并在新的字符串中返回被提取的部分 |
split() |
把字符串分割为子字符串数组 |
substr() |
从起始索引号提取字符串中指定数目的字符 |
substring() |
提取字符串中两个指定的索引号之间的字符 |
toLocaleLowerCase() |
根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLocaleUpperCase() |
根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLowerCase() |
把字符串转换为小写 |
toString() |
返回字符串对象值 |
toUpperCase() |
把字符串转换为大写 |
trim() |
移除字符串首尾空白 |
valueOf() |
返回某个字符串对象的原始值 |
知识拓展:
ü charAt() 方法:
<p id="demo">单击按钮显示字符串的最后一个字符。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction(){
var str="HELLO WORLD";
var n=str.charAt(str.length-1);
document.getElementById("demo").innerHTML=n;
}
</script>
ü concat() 方法用于连接两个或多个字符串。
var txt1 = "Hello ";
var txt2 = "world!";
var n=txt1.concat(txt2);
ü indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
注意: indexOf() 方法区分大小写。
在字符串查找字符 "e" 第一次出现的位置:
var str="Hello world, welcome to the universe.";
var n=str.indexOf("e");
ü includes() 方法
用于判断字符串是否包含指定的子字符串。
如果找到匹配的字符串则返回 true,否则返回 false。
注意: includes() 方法区分大小写。
从第 12 个索引位置开始查找字符串:
var str = "Hello world, welcome to the Runoob.";
var n = str.includes("world", 12);
n 输出结果:
false
ü replace() 方法
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
该方法不会改变原始字符串。
执行一个全局替换:
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/g,"red");
n 输出结果:
Mr Blue has a red house and a red car
执行一个全局替换, 忽略大小写:
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/gi, "red");
n 输出结果:
Mr red has a red house and a red car
ü slice(start, end) 方法
可提取字符串的某个部分,并以新的字符串返回被提取的部分。
使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。
字符串中第一个字符位置为 0, 第二个字符位置为 1, 以此类推。
提示: 如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
提取字符串的片断:
var str="Hello world!";
var n=str.slice(1,5);
n 输出结果:
ello
从字符串的第3个位置到第8个位置直接的字符串片段:
var str="Hello world!";
var n=str.slice(3,8);
以上实例输出结果:
lo wo
ü split() 方法
用于把一个字符串分割成字符串数组。
提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注意: split() 方法不改变原始字符串。
把一个字符串分割成字符串数组:
var str="How are you doing today?";
var n=str.split(" ");
n 输出一个数组的值:
How,are,you,doing,today?
分割每个字符,包括空格:
var str="How are you doing today?";
var n=str.split("");
n 输出数组值得结果:
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
ü trim() 方法
用于删除字符串的头尾空格。
trim() 方法不会改变原始字符串。
如果你的浏览器不支持 trim() 方法,你可以使用正则表达式来实现:
function myTrim(x) {
return x.replace(/^\s+|\s+$/gm,'');
}
function myFunction() {
var str = myTrim(" Runoob ");
alert(str);
}
输出结果:
Runoob
x.replace(/\s+|\s+/gm,'') //删除所有空格
知识拓展:
1) search() 方法
定义和用法
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串(返回值是匹配的个数)。
如果没有找到任何匹配的子串,则返回 -1。
语法
string.search(searchvalue)
查找 "Runoob":
var str="Visit Runoob!";
var n=str.search("Runoob");
n 输出结果:6
2) match() 方法
定义和用法
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配(返回匹配的结果)。
注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。
语法
string.match(regexp)
全局查找字符串 "ain",且不区分大小写:
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/gi);
n 输出结果: ain,AIN,ain,ain
在字符串中查找 "ain":
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g);
n 输出数组结果值: ain,ain,ain
3) replace() 方法
定义和用法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
该方法不会改变原始字符串。
语法
string.replace(searchvalue,newvalue)
执行一次替换,当第一个 "Microsoft" 被找到,它就被替换为 "Runoob":
var str="Visit Microsoft! Visit Microsoft!";
var n=str.replace("Microsoft","Runoob");
n 输出结果: Visit Runoob!Visit Microsoft!
执行一个全局替换:
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/g,"red");
n 输出结果:
Mr Blue has a red house and a red car
通过 prototype 为 JavaScript 的 String 对象添加方法,来实现将所有 "Microsoft" 替换为 "Runoob":
String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.replace(new RegExp(search, 'g'), replacement);
};
标签:返回,字符,String,对象,var,typeof,str,字符串 From: https://www.cnblogs.com/yiqiul/p/17343351.html