首页 > 其他分享 >String对象

String对象

时间:2023-04-22 16:45:14浏览次数:34  
标签:返回 字符 String 对象 var typeof str 字符串

一、 数据类型转换

  1. 数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean [ˈbuliən])、对空(Null)、未定义(Undefined)、Symbol [ˈsɪmbəl]。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

  1. 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>

  1. JavaScript 类型转换

二、 string字符串

  1. 语法

字符串字面量采取以下形式:

'string text'

"string text"

"中文/汉语"

也能使用 String 函数将其他值生成或转换成字符串:

String(thing)

new String(thing)

参数thing :任何可以被转换成字符串的值。

  1. 转义字符

除了普通的可打印字符以外,一些特殊有特殊功能的字符可以通过转义字符的形式放入字符串中:

Code

Output

\0

空字符

\'

单引号

\"

双引号

\\

反斜杠

\n

换行

\r

回车

\v

垂直制表符

\t

水平制表符

\b

退格

\f

换页

\uXXXX

unicode 码

\u{X} ... \u{XXXXXX}

unicode codepoint 

\xXX

Latin-1 字符(x小写)

和其他语言不同,javascript 的字符串不区分单引号和双引号,所以不论是单引号还是双引号的字符串,上面的转义字符都能运行 。

  1. 长字符串

有时,你的代码可能含有很长的字符串。你可能想将这样的字符串写成多行,而不是让这一行无限延长或着被编辑器折叠。有两种方法可以做到这一点。

其一,可以使用 + 运算符将多个字符串连接起来,如下所示:

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 方法提取从父字符串中提取子字符串。

  1. 从字符串中获取单个字符

获取字符串的某个字符有两种方法。 第一种是使用 charAt 方法:

return 'cat'.charAt(1); // returns "a"

另一种 (在ECMAScript 5中有所介绍) 是把字符串当作一个类似数组的对象,其中的每个字符对应一个数值索引:

return 'cat'[1]; // returns "a"

使用括号访问字符串不可以对其进行删除或添加,因为字符串对应未知的属性并不是可读或配置的。

  1. 字符串比较

在 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 方法也能达到同样的效果。

  1. 字符串对象

通常, 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

  1. 字符串对象属性

属性              描述

constructor 返回创建字符串属性的函数

length       返回字符串的长度

prototype 允许您向对象添加属性和方法

  1. 字符串方法

方法

描述

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

相关文章

  • functional:函数对象库
    functional的基本概念和定义functional是C++标准模板库(STL)中的一个重要组件,它提供了一系列函数对象(functionobject),用于在算法中进行函数调用。函数对象可以像普通函数一样调用,但与普通函数不同的是,函数对象可以存储状态,因此可以在多次调用之间保存状态。functional中常见的......
  • string的使用方法和高级用法
    字符串的定义和初始化#include<string>usingnamespacestd;stringstr1;//定义一个空的字符串stringstr2="helloworld";//使用字符串字面量进行初始化stringstr3("helloworld");//使用构造函数进行初始化stringstr4(str2);//使用拷贝构造函数进行初始化字符串......
  • Java中的String的intren方法详解
    intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池Stringa=newString("hello").intern();Stringb="hello";System.out.println(a==b);//Stringa=newString("hello");a.intern();Stringb="hello";System.out.println(a==b)......
  • 物联网---04.java对Modbus数据解析与对象互转
    一、Modbus互转代码1.实现代码@DatapublicclassModbusTools{/***modbus数据转对象*@paramdata串口数据*@paramdataType1代表16位读取2个byte数据,2代表32位读取4个byte数据*/publicstaticModbusDataAnalyzeBeandataAnalyze(by......
  • js:判断对象是否包含元素,是否为空对象
    目录方式一:JSON.stringify方式二:Object.keys方式三:for...in方式一:JSON.stringify如果JSON.stringify(obj)=='{}'就是空对象letobj1={}letobj2={name:'Tom'}console.log(JSON.stringify(obj1));//{}console.log(JSON.stringify(obj2));//{"nam......
  • SpringDataRedis的序列化方式和StringRedisTemplate手动序列化详解
    一.SpringDataRedis之前新创建一个Spring项目,在进行配置完成redis和common-pool依赖:1.引入依赖redis:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId></dependency>......
  • Json使用toString
    Json的使用:1.对象转Json {"":"",“”:""}2.数组转Json [{"":"",“”:""},{"":"",“”:""}]3.JSon转对象4.Json转数组fastjson是ali的,比较使用于SpringC、SpringB/***转json给前端**@par......
  • Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本
    配置文件介绍SECRET_KEY='0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a'#盐DEBUG=True#调试模式,等项目上线的时候,改成False#配置数据库DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3',#默认是自......
  • Response对象-响应字符数据
    Response响应数据1.response将字符数据返回到浏览器需要两步:1.通过response对象获取字符输出流PrintWriterwriter=resp.getWriter();2.通过字符输出流写数据:writer.writer(“aaa”);案例浏览器中打印出字符/***响应字符数据:设置字符数据的响应体*/@WebServle......
  • JVM垃圾回收机制之对象回收算法
    在前面的文章中,介绍了JVM内存模型分为:堆区、虚拟机栈、方法区、本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享。在Java中还有一个重要的机制:GC(垃圾收集器),堆是GC管理的主要区域,本文会带大家了解GC机制。GC......