JS字符串详解

1,字符串的创建方法
String类型是字符串的对象包装类型,可以使用String构造函数创建。
有3种方法来创建字符串

var str = new String("Hello World");
var str = String("Hello World");
var str = 'xxx';

2.方法
String 对象的方法也可以在所有基本的字符串值中访问到。其中,继承的 valueOf()、toLocale- String()和 toString()方法,都返回对象所表示的基本字符串值。

String 类型的每个实例都有一个 length 属性,表示字符串中包含多个字符。

 比如
var stringValue = "hello world"; 
alert(stringValue.length);   //"11" 

这个例子输出了字符串"hello world"中的字符数量,即"11",空格也算在其中。

1.字符方法
charAt()和 charCodeAt():用于访问字符串中特定字符的方法,这两个方法都接收一个 参数,即基于 0 的字符位置。其中,charAt()方法以单字符字符串的形式返回给定位置的那个字符

例如
var str = "hello world"; 
alert(str.charAt(1));   //"e" ,字符串"hello world"位置 1处的字符是"e",因此调用 charAt(1)就返回了"e"
var str2 = "hello world"; 
alert(str2.charCodeAt(1));   //"101" ,101是小写字母"e"的字符编码。 
  1. 字符串操作方法
    concat(),用于将一或多个字符串拼接起来, 返回拼接得到的新字符串
  例如
  var str1 = "hello ";
  var result = str1.concat("world"); 
  alert(result);          //"hello world" 
  alert(str1);      //"hello" 不改变原字符串

ES还提供了三个基于子字符串创建新字符串的方法:slice()、substr() 和 substring()。
这三个方法都会返回被操作字符串的一个子字符串,而且都接受一或两个参数。
第一个参数指定子字符串的开始位置,第二个参数有所不同。
具体来说就是,slice()和substring()的第二个参数指定的是子字符串最后一个字符后面的位置。
而substr()的第二个参数指的是返回的字符的个数。
如果没有给这些方法传第二个参数,则将字符串的末尾作为结束位置。
都不会修改字符串本身(子字符串)。

 例如
var str = "hello world";
console.log(str.slice(3));    //"lo world"
console.log(str.substring(3));  //"lo world"
console.log(str.substr(3));    //"lo world"
console.log(str.slice(3,7));   //"lo w"
console.log(str.substring(3,7)); //"lo w"
console.log(str.substr(3,7));  //"lo worl"

如果在传递给这些方法的参数是负数的情况时,他们的行为就不相同了。

例如:
var str = "hello world";
console.log(str.slice(-3));    //"rld"  
console.log(str.substring(-3);  //"hello world"  此方法的参数是负数都转换为0
console.log(str.substr(-3));    //"rld"
console.log(str.slice(3,-4));   //"lo w"
console.log(str.substring(3,-4)); //"hel"  此方法会将较小的数作为开始位置
console.log(str.substr(3,-4));  //""(空字符串)

我们来总结一下:

str.slice(start, end); 有end时,start<= 范围 < end , [负数反向截取],start的位置必须【在前】 end的位置必须【在后】

str.substring(start, end);// //有end时,start<= 字符 <end,只有start时,start<= 字符,有负数 ,把负数置 0,小的数为start, 大的数为end

substr(index,howmany);//返回截取的字符

3.字符串位置方法
indexOf()和 lastIndexOf():可以从字符串中查找子字符串的方法,
这两个方法都是从 一个字符串中搜索给定的子字符串,然后返子字符串的位置(如果没有找到该子字符串,则返回-1)。区别在于:indexOf()方法从字符串的开头向后搜索子字符串,而 lastIndexOf()方法 是从字符串的末尾向前搜索子字符串。

例如
var str = "hello world"; 
alert(str.indexOf("o")); //4 ,从前往后找,子字符串"o"第一次出现的位置是 4,即"hello"中的"o";
alert(str.lastIndexOf("o"));   //7 ,从后往前找,最后一次出现的位置是 7,即"world"中的 "o";

如果"o"在这个字符串中仅出现了一次,那么 indexOf()和lastIndexOf()会返回相同的位置值。 

这两个方法都可以接收可选的第二个参数,表示从字符串中的哪个位置开始搜索。换句话说, indexOf()会从该参数指定的位置向后搜索,忽略该位置之前的所有字符;而 lastIndexOf()则会从 指定的位置向前搜索,忽略该位置之后的所有字符。

例如
var str = "hello world"; 
alert(str.indexOf("o", 6));//7 ,在将第二个参数 6 传递给这两个方法之后,得到了与前面例子相反的结果。
                          //这一次,由于 indexOf()是从位置 6(字母"w")开始向后搜索,
                          //结果在位置 7找到了"o",,因此它返回 7
alert(str.lastIndexOf("o", 6));//4 ,从后向前数 6 开始向前搜索。找到"hello"中的"o",因此它返回 4。

4. trim()方法
ECMAScript 5为所有字符串定义了 trim()方法。此方法会创建一个字符串的副本,删除前置及 后缀的所有空格,然后返回结果。

var str = "   hello world   ";
function trim(str){
    var newStr = str.replace(/^\s+|\s+$/g,"")
    return newStr;
}
var newStr = trim(str);
console.log(newStr);//"hello world"

例如
var str = "  hello world   ";
var newStr = str.trim();
console.log(newStr);  //"hello world",删除了前后的空格
console.log(str);     //"  hello world   "

5. 字符串大小写转换方法
toLowerCase() 转小写
toLocaleLowerCase() 根据特定地区的语言转小写
toUpperCase() 转大写
toLocaleUpperCase() 根据特定地区转大写

例如:
var str = "hello world";
console.log(str.toUpperCase());    //"HELLO WORLD"
console.log(str.toLocaleUpperCase());  //"HELLO WORLD"
console.log(str.toLowerCase());   //"hello world"
console.log(str.toLocaleLowerCase());  //"hello world"

如果不知道自己的代码将在哪种语言环境中运行的情况下,还是使用针对地区的方法更稳妥一些。
好了,今天就暂时到这里了,想知道更多的可以点个关注,

愚才疏学浅,故难免错漏,敬请海涵,还望不吝指出,万分感激!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容