string常用方法?string的值为什么不能改变
- 开发语言
- 2023-08-13
- 90
大家好,如果您还对string常用方法不太了解,没有关系,今天就由本站为大家分享string常用方法的知识,包括string的值为什么不能改变的问题都会给大家分析到,还...
大家好,如果您还对string常用方法不太了解,没有关系,今天就由本站为大家分享string常用方法的知识,包括string的值为什么不能改变的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
C++中string的用法string字符串的使用方法
1、定义和构造初始化
string提供了很多构造函数,可以以多种方式来初始化string字符串
2、赋值,拼接字符串
string重载了=++=等多种运算符,让字符串组合拼接更简单
3、访问字符操作
string可以按数组方式,以下标来访问。还可以用at()函数访问指定的字符
4、可以使用STL的接口
可以把string理解为一个特殊的容器,容器中装的是字符
5、比较操作==!=>>=<<=compare等
string的比较操作,按字符在字典中的顺序进行逐一比较。在字典前面的字符小于后面的字符。
6,查找findrfind
string中除了find、rfind,还有find_first_of等函数也提供了强大的查找功能
7、除了string中的find函数外,char[]数组也有强大的查找函数
C++中有strstr、strchr等也有查找功能。函数说明如下
char*strstr(constchar*str,constchar*substr);返回指针,指向substr在字符串str中首次出现的位置。
char*strchr(constchar*str,intch);返回指针,指向str中字符ch首次出现的位置。
8、与char[]的相互转换
copy(),返回指针,赋值给char[]数组名
c_str(),返回const类型的指针
data(),将内容以字符数组的形式返回
9、分割字符串
常用strtok和substr来分割字符串
10、string大小分配函数
capacity(),返回容器在它已经分配的内存中可以容纳多少元素
resize(Container::size_typen),强制把容器改为容纳n个元素
11、string中的字符替换、删除操作
12、char[]常用的比较、拼接字符串功能
任意字符查找:char*strpbrk(constchar*str1,constchar*str2);
内存拷贝:void*memcpy(void*to,constvoid*from,size_tcount);
如果to和from重叠,则函数行为不确定。
memset()对内存初始化。如:memset(array,'\0',sizeof(array));
这是将数组的所以元素设置成零的很方便的方法
string函数详解
string函数包含指定长度重复字符的字符串。
string函数的语法有下面的命名参数:
number必要参数;Long。返回的字符串长度。如果number包含Null,将返回Null。
character必要参数;Variant。为指定字符的字符码或字符串表达式,其第一个字符将用于建立返回的字符串。
如果character包含Null,就会返回Null。
注意number是返回的字符串长度,而不是character的重复次数。
实例:
z=string(3,"w")
z的返回值是:www
z=string(3,"aw")
z的返回值是:awa
z=string(3,"www")
z的返回值是:www
说明
如果指定character的数值大于255,String会按下面的公式将其转为有效的字符码:
characterMod256
Python中表示字符串常量的方式有几种
python中表示字符串常量通常可以使用以单引号包裹内容,例如('helloWord'),以双引号包裹内容,例如("hello"),当内容比较多需要换行还可以使用三引号包裹('"hellohellohellohellohellohellohellohellohello'"),双引号和单引号可以一起使用,当外面室友双引号包裹里面内容应当使用单引号,反之外面为单引号,里面为双引号
string类提供的合法方法
1、用字符数组value创建一个String对象。
2、用字符数组以x开始的n个字符创建一个String对象。
3、获取字符串长度。
4、获取字符串某一位置的字符。
5、获取字符串的子串等。
leercode字符串题目常用方法
字符串类型在前端开发者看来是使用最频繁的类型之一,网站上可见的各种文案,几乎都是字符串或者数组类型的数据,我们经常需要使用的操作最多的就是以下几点:读取字符串、转换字符串、清空字符串、拼接字符串、截取字符串等。
========(我们先来看一下Es6中最实用的一个模板字面量,后面会就使用率较高的字符串方法逐个分析。)
----------模板字面量(从ECMAScript2015开始,字符串字面量也可以称为模板字面量:)
----字符串不区分单引号‘’和双引号“”所有的字符串拼接都会识别,如果你的字符串比较长,可分行使用“+”来拼接。
例如:
letlongString="Thisisaverylongstringwhichneeds"+
"towrapacrossmultiplelinesbecause"+
"otherwisemycodeisunreadable.";
console.log(longString);
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----或者也可以使用"\"来告诉浏览器,你需要继续写这个字符串,但需要保证"\"后面是没有任何符号或者是空格的;
例如:
letlongString="Thisisaverylongstringwhichneeds\
towrapacrossmultiplelinesbecause\
otherwisemycodeisunreadable.";
console.log(longString)
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----以前,我们用单引号或双引号表示字符串。
leta='123';//单引号
letb="123";//双引号
-------现在,使用模板字面量反撇号``。在实际开发中,这是经常都要用到的方法。
letc=`123`//反撇号
在字符串中使用反撇号,只需要加上转义符,这时中间的`,没有什么意义:
letd=`12\`3`//字符串内插入反撇号的方式。=》"12`3"
------在多行字符串的使用价值:
在没有模板字面量的时候,我们要实现多行字符串,必须用到换行符:
leta='123\n456';
console.log(a);
//123
//456
-------------------使用模板字面量,就可以非常简单的实现需求。
leta=`123
456`;
console.log(a)//123
//456
---------------在模板字面量插入变量的方法。
在原来的我们要在字符串中拼接变量,需要用‘+变量+’或者+来实现,而现在而是使用${params}直接插入你需要添加到字符串的位置。这种方式也叫作字符串占位符。占位符支持互相嵌套模板字面量,强大吧。有了它,我们终于可以抛弃+拼接字符串的恶心做法了
-------字符串和变量拼接:
varstr="lixiaoqing";
console.log(`woshi${str}`)=》"woshilixiaoqing"
-------变量和变量拼接:
varstr0="woshi";
varstr="lixiaoqing";
console.log(str0+`${str}`)//woshilixiaoqing
-------模板字面量的终极用法
tag是一个方法,方法名你可以任意命名,这种写法被称作标签模板。
functiontag(literals,...substitutions){
//literals是数组,第一个位置是"",第二个位置是占位符之间的字符串,在本例中是haha
//substitutions是字符串中的模板字面量,可能多个
//函数最终返回字符串
}(此方法待完成)
一、charAt()根据下标查询/访问字符串的某个字符
varstr1="age";
console.log(str1.charAt(2))=>e
还可以使用[]的形式来访问,中括号填写的是字符串的下标
varstr1="age";
console.log(str1[2])=>e
二、字符串的比较">","<","===",">=","<=","!=="
1.字母字符串比较
varstr1="aa";
varstr2="bb";
console.log(str1<str2)=>true
2.数字字符串比较(会比较两个数字的大小)
varstr1="10";
varstr2="15";
varstr3="10";
console.log(str1<str2,str1===str3)=>true,true
--------基本字符串和字符串对象的区别
请注意区分JavaScript字符串对象和基本字符串值.(对于Boolean和Numbers也同样如此.)
vars_prim="foo";vars_obj=newString(s_prim);
console.log(typeofs_prim);//Logs"string"
console.log(typeofs_obj);//Logs"object"
三、字符串的长度length
varstr="我爱你中国";
console.log(str.length)=>5
四、charCodeAt(index)返回表示给定索引的字符的Unicode的值。
方法返回0到65535之间的UTF-16编码单元匹配Unicode编码单元整数,当charCodeAt()括号中没有值时,默认为0;当有参数时,查询的是字符串的索引值,index的值为一个大于等于0,小于字符串长度的整数
例:
varstr="abc";
console.log(str.charCodeAt())=》97
varstr="abc";
console.log(str.charCodeAt(0))=》97
结果都是一样的,查询到"a"在编码中的位置为97
varstr="abc";
console.log(str.charCodeAt(1))=》98
字母"b"在编码中的位置为98
五、str.concat(str1,str2....)字符串拼接
在字符串拼接中,最常用的还是“+”;
varstr="d";
varstr1="e";
varstr2="f";
varstr3=str+str1+str2;
console.log(str3)=>"def"
当然我们也可以使用concat(....)
varstr1="a";
varstr2="b";
varstr3="c";
console.log(str1.concat(str2,str3))=>"abc"
六、includes(str)检测一个字符串是否在另一个字符串里包含,区分大小写
varstr="abcdef";
console.log(str.includes("def"));=>true
而我们把“def”换成大写的“DEF”时,并不能检测到
varstr="abcdef";
console.log(str.includes("DEF"));=>false
七、endsWith()检测字符串是不是以“str”结尾的
str.endsWith(searchString[,position]);
searchString
要搜索的子字符串。
position
在str中搜索searchString的结束位置,当不填写值时,默认值为str.length,也就是真正的字符串结尾处,从1开始,空格和符号也算字符。也是开始的位置
例:
1、当没有第二个参数时。默认第二个参数时字符串的length
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("question."))=>true
2、第二个参数的开始时从“1”开始的,而不是从“0”
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("T",1))=>true;
3、第二个参数的计算是包含空格和标点符号的
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("Tobe",5))=>true
八、indexOf()方法返回str查找的结果,如果是有返回指定索引(查找到结果的第一个字符的位置),如果没有返回“-1”,区别大小写
例:
"ABC".indexOf("A")=》0查询到“A”,返回位置为索引“0”
"ABC".indexOf("e")=》-1并没有查询到“e”,返回-1
"ABC".indexOf("AB")=》0同样查询到“AB”,返回结果以第一个字符的位置做结果
----------检测是否存在某字符串
当检测某个字符串是否存在于另一个字符串中时,可使用下面的方法:
"BlueWhale".indexOf("Blue")!==-1;//true"BlueWhale".indexOf("Bloe")!==-1;//false
使用indexOf统计一个字符串中某个字母出现的次数
在下例中,设置了count来记录字母e在字符串str中出现的次数:
varstr='Tobe,ornottobe,thatisthequestion.';
varcount=0;
varpos=str.indexOf('e');
while(pos!==-1){
count++;
pos=str.indexOf('e',pos+1);
//重新给pos赋值,从上个查询到str的位置+1的位置继续查找,如果能查到就会再进循环,count+1
}
console.log(count);//displays4
九、lastIndexOf()方法返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回-1
语法
str.lastIndexOf(searchValue[,fromIndex])
参数
searchValue
一个字符串,表示被查找的值。
fromIndex
从调用该方法字符串的此位置处开始查找。可以是任意整数。默认值为str.length。如果为负值,则被看作0。如果fromIndex>str.length,则fromIndex被看作str.length。
例:
当只有一个参数的时候,第二个值默认str.length,也就是查询整个字符串,查找到这个str在整个字符串中最后出现的位置
"AVBDHIUOKL".lastIndexOf("O");//7
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A");//18
当有第二个参数时,第二个参数会被看成查询这个字符串的结束位置
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",10);
//0从0到第10个索引值时,只在0的位置查询到"A",所以返回0
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",15);//15
//0从0到第15个索引值时,在第15的位置查询到"A",所以返回15
十、str.repeat(count)构造并返回一个新字符串,该字符串是循环完成后的新字符串
repeat(count)的值一般为数字,就好比"a".repeat(5)=="a"*5=="aaaaa"
但也会出现其他情况,例如以下:
1.当值为“-1”时,会报错,所以值不能为负数
"abc".repeat(-1)//RangeError:repeatcountmustbepositiveandlessthaninifinity
2.那我们值为“0”时,会有什么情况呢?将不会循环,返回一个空字符串
"abc".repeat(0)//""
3.那么我们接下来输入一个正常的数字“1”,repeat给我们返回了"abc"*1的结果,它将循环一遍
"abc".repeat(1)//"abc"
4.那么我们试试“2”,看看会不会返回循环两次,确实它返回了字符串循环两遍的结果
"abc".repeat(2)//"abcabc"
5.那我们来试试小数,看看是循环几次呢,结果是它将小数点后面的抹去了,只循环了前面的数字
"abc".repeat(3.5)//"abcabcabc"参数count将会被自动转换成整数.
6.那我们试试“1/0”,并没有解析出来,因为1/0==inifinity
"abc".repeat(1/0)//RangeError:repeatcountmustbepositiveandlessthaninifinity
7.那我们再来试试字符串呢?结果它将字符串自动转为了number,并正确循环并返回了。
"abcd".repeat("2")//"abcabc"
8.那我们来试试,看看它是否能解析中文汉字呢?结果是并没有,也没有报错
"abcd".repeat("二")//""
十一、str.slice(beginSlice,endSlice)截取字符串,第一个参数为开始位置,第二个参数为结束位置,前包后不包
1.slice()从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说,slice不修改原字符串,只会返回一个包含了原字符串中部分字符的新字符串。
2.注意:slice()提取的新字符串包括beginSlice但不包括endSlice。
3.提取新字符串从第二个字符到第四个(字符索引值为1,2,和3)。
"avxdsdfasd".slice(1,4)//vxd
4.提取第三个字符到倒数第二个字符。-1为倒数第一个
"abckdesdf".slice(2,-1)//ckdesd
5.当开始的值和结束的值都为负数时,结果会从后向前数,从-3到-1之间的值(前包后不包)
"abckdesdf".slice(-3,-1)//"sd"
十二、str.split()方法,使用指定的分隔符字符串将一个string对象分割成字符串数组
1.当括号中为空值时,直接将它转为字符串数组
console.log("abcdefg".split());//["abcdefg"]
2.当括号中为空引号时,它将每个字符串都分割了出来
console.log("abcdefg".split(""));//["a","b","c","d","e","f","g"]
当在空引号中加上一个空格时,它会以你原字符串的空格来分割
"WebkitMozOmsKhtml".split("")//["Webkit","Moz","O","ms","Khtml"]
3.当括号中为字符串中的字母,它将以当前字母分割字符串
console.log("abcdefg".split("a"));//["","bcdefg"]
console.log("abcdefg".split("b"));//["a","cdefg"]
4.当括号中字符串并不是当前字符串中包含的,它只接转成数组字符串,不做其他操作
console.log("abcdefg".split("bbbb"));//["abcdefg"]
十三、startsWith()检测字符串是不是以“str”开头的,根据判断返回true,false(ES6新添,与endsWith相反)
语法
str.startsWith(searchString[,position]);
参数
searchString
要搜索的子字符串。
position
在str中搜索searchString的开始位置,默认值为0,也就是真正的字符串开头处。
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.startsWith("Tobe"))//true
console.log(str.startsWith("be"))//false
console.log(str.startsWith("nottobe",10))//true
console.log(str.startsWith("nottobe"))//false
十四、str.substr()方法返回一个字符串中从指定位置开始到指定字符数的字符。
str.substr(start[,length])
start:开始截取的位置,开始索引为0,最大为str.length-1,也可为负数;
length:要截取的长度,如果不填写,默认为str.length-1;最小为1,最大为str.length-1.负数无效,如果为0或者负值,返回一个空字符串。
varstr="abcdefghij";
1.当两个值都为正值,且都在范围之内:
console.log("(1,2):"+str.substr(1,2));//(1,2):bc
2.当截取位置为负数时,会从后向前数,倒数第一个索引为-1,截取的长度会从当前位置向后数
console.log("(-3,2):"+str.substr(-3,2));//(-3,2):hi
3.当只有开始位置的值,并且为负值时,会从当前位置,截取到字符串的末尾
console.log("(-3):"+str.substr(-3));//(-3):hij
4.当只有开始的位置,为正值,第二个值默认是str.length-1,也就是截取到字符串的末尾
console.log("(1):"+str.substr(1));//(1):bcdefghij
5.当开始的索引是超过字符串长度的负数时,就相当于字符串一直是从后向前数的
console.log("(-20,2):"+str.substr(-20,2));//(-20,2):ab
6.当开始的索引是超过字符串的长度的正值时,无法截取到内容,返回空字符串
console.log("(20,2):"+str.substr(20,2));//(20,2):""
十五、str.substring()截取开始位置和结束位置之间的字符串,前包后不包
str.substring(start,stop)
start:开始截取的位置,不为负数;
stop:结束的截取位置,不为负数;
当参数为负数时,不识别,默认转为0;
当第二个值为负数时,默认转为0,,并调换开始和结束的两个值的位置,
varstr="abcdefghij";
1.当开始和结束都为正值,并都在范围内,从索引为1的位置截取到索引为2的位置;
console.log("(1,2):"+str.substring(1,2));//(1,2):b
2.当只有一个开始位置的值时,会从开始位置直接截取到结束位置;
console.log("(1):"+str.substring(1));//(1):bcdefghij
3.当开始位置为负数时,会直接转为0来截取;
console.log("(-1):"+str.substring(-1));//(-1):abcdefghij
4.当结束位置超过字符串的长度,会默认忽略第二个参数;
console.log("(1,20):"+str.substring(1,20));//((-1):bcdefghij
5.当结束位置为负数,会直接转为0,并交换开始和结束的位置;
console.log("(1,-5):"+"sdsdfsdf".substring(1,-5));//((1,-5):s
6.当开始位置和结束位置的值为同一值时,返回空字符串
console.log("(1,1):"+"sdsdfsdf".substring(1,1));//((1,1):""
十六、str.toLowerCase()将字符串转为小写的形式(并不会影响字符串本身的值)
console.log("ABC".toLowerCase());//"abc"
十七、str.UpperCase()将字符串转为大写的形式(并不会影响字符串本身的值)
console.log("alphabet".toUpperCase());//"ALPHABET"
十八、str.toString()方法用于将现有的对象转为字符串;
1.数组转字符串;
console.log([1,2,3,4,5].toString());//"1,2,3,4,5"
2.对象转字符串,将会返回[objectObject],故不支持转换
vara={a:1,b:2};
console.log(a.toString());//[objectObject]
十九、str.trim()方法会从一个字符串的两端删除空白字符,在这个上下文中的空白字符是所有的空白字符(space(空格键),tab,no-breakspace等)以及所有行终止字符(如LF,CR)。
trim()方法并不会影响原字符串,会返回一个新字符串。
例:
1.当字符串两侧都有空格时,会全部删除
varorig='foo';
console.log(orig.trim());//'foo'
2.当字符串单侧有空格,则就从单侧删除
varorig='foo';
console.log(orig.trim());//'foo'
二十、String.fromCharCode(num1,num2,、、numN)用于返回当前数字所对应的字符
语法
String.fromCharCode(num1,...,numN)
参数
num1,...,numN
一组序列数字,表示Unicode值。
描述
该方法返回一个字符串,而不是一个String对象。
由于fromCharCode是String的静态方法,所以应该像这样使用:String.fromCharCode(),而不是作为你创建的String对象的方法
OK,本文到此结束,希望对大家有所帮助。
本文链接:http://www.xinin56.com/kaifa/4832.html