⑴ js中字元串的常見方法
首先創建一個字元串,創建字元串的方法有兩種:
1.字面量:var str = "abc123efg456";
2.構造函數:var str = newString("abc123efg456");
其次,需要注意的是,javascript的字元串是不可變的,String類定義的方法都不可以改變字元串內容。若是需要通過方法改變字元串的內容,需要將返回值重新賦值給原來的字元串。如:str = str.toUpperCase();
下面,介紹比較常用的字元串的方法:
var str = "1abc123abc456abc";
功能:返回指定的字元串值在字元串中首次出現的位置。
參數:s為要檢索的字元,必需;n為可選的字元參數,規定字元串檢索的位置。
demo:
var index1 = str.indexOf("a");
var index2 =str.indexOf("a",8);
var index3 =str.indexOf("a",14);
console.log(index1); // 1
console.log(index2); // 13
console.log(index3); // -1 從檢索的位置檢索不到字元,返回-1
功能:返回一個指定的字元串值最後出現的位置,在一個字元串中的指定位置從後向前搜索。
參數:s為要檢索的字元,必需;n為可選的字元參數,規定字元串檢索的位置。
demo:
var index1 =str.lastIndexOf("a");
var index2 =str.lastIndexOf("a",11);
var index3 =str.lastIndexOf("a",0);
console.log(index1); // 13
console.log(index2); // 7
console.log(index3); // -1 從檢索的位置檢索不到字元,返回-1
功能:返回指定位置的字元。
參數:n表示字元串中某個位置的索引,不寫默認為第0個字元。
demo:
var s = str.charAt(3);
console.log(s); // c
功能:返回指定位置的字元的Unicode編碼。
參數:n表示字元串中某個位置的索引,可以沒有參數,默認是索引為0的參數。
demo:
var s = str.charCodeAt(3);
console.log(s); // 99
注:c的unicode編碼為99。
注意:charAt(n)方法和charCodeAt(n)方法類似,前者返回的是字元,後者返回的是字元的unicode編碼。
功能:將編碼轉成字元方法。
參數:十進制和十六進制,不支持unicode編碼。
demo:
var s1 =String.fromCharCode("0x56fd");
var s2 = String.fromCharCode(22269);
console.log(s1); //國
console.log(s2); //國
注:「國」的十六進制編碼是56fd,十進制是22269。
功能:根據指定位置,截取子串,從m到n,不包括n。
參數:m,n為索引。
demo:
var s = str.slice(2,7);
console.log(s); // bc123
功能:根據指定位置,截取子串,從m到n,不包括n。
參數:m,n為索引。
demo:
var s = str.substring(2,7);
console.log(s); // bc123
功能:根據指定位置,截取子串,從m位置取,共取n個。
參數:m,n為索引。
demo:
var s = str.substr(2,7);
console.log(s); // bc123ab
功能:字元串替換。
參數:oldstr為需要被替換的字元,newstr為替換的字元。
demo:
var s =str.replace("a","l");
console.log(s); // 1lbc123abc456abc
注意:每次只能替換一個符合條件的字元。
功能:分割字元,返回成為數組。
參數:"s"為分割的字元。
demo1:
var arr1 = str.split("b");
console.log(arr1); // ["1a", "c123a","c456a", "c"]
demo2:
var arr2 = str.split(); //["1abc123abc456abc"]
console.log(arr2);
demo3:
var arr3 = str.split("");
console.log(arr3); // ["1","a", "b", "c", "1", "2","3", "a", "b", "c", "4","5", "6", "a", "b", "c"]
注意:參數不寫的時候,返回原字元串組成的數組;參數為空字元的時候,將每個字元分割,返回一個數組
功能:檢索字元串中指定的子字元串,返回第一個與字元串匹配的索引值。
參數:需要被檢索的字元串。
demo:
var s1= str.search("abc");
var s2 = str.search("efg");
console.log(s1); // 1
console.log(s2); // -1
注:如果沒有找到任何匹配的子串,則返回-1。
功能:在字元串內檢索指定的值,匹配到就返回指定的字元值。
參數:需要被檢索的字元串。
demo:
var s1= str.match("abc");
var s2 = str.match("efg");
console.log(s1); // ["abc",index: 1, input: "1abc123abc456abc", groups: undefined]
console.log(s2); // null
注:該方法類似indexOf()和lastIndexOf(),但是它返回指定的值,沒有就返回null
功能:連接兩個或多個字元串,返回連接後的字元串。
參數:需要連接的字元串。
demo:
var str1="abc ";
var str2="123";
console.log(str1.concat(str2)); // "abc 123"
提示:如果需要拼接字元串,用運算符「+」更簡單。
功能:把字元串轉換為小寫。
參數:無
demo:
var str = "ABC abc";
console.log(str.toLowerCase()); // abcabc
功能:把字元串轉換為大寫。
參數:無
demo:
var str = "ABC abc";
console.log(str.toUpperCase()); // ABCABC
功能:把字元串顯示為大號字體。
參數:無
demo:
var s = str.big();
document.write(str+"");
document.write(s);
功能:把字元串顯示為小號字。
參數:無
demo:
var s = str.small();
document.write(str+"");
document.write(s);
功能:把字元串顯示為粗體。
參數:無
demo:
var s = str.bold();
document.write(str+"");
document.write(s);
功能:把字元串顯示為斜體。
參數:無
demo:
var s = str.italics();
document.write(str+"");
document.write(s);
功能:將字元以指定的顏色顯示。
參數:顏色名(red)、RGB 值(rgb(255,0,0))或者十六進制數(#FF0000)。
demo:
var s = str.fontcolor("red");
document.write(str+"");
document.write(s);
功能:將字元以指定的字型大小顯示。
參數:size參數必須是從1和7之間的數字,1表示小的字型大小,7表示最大的字型大小。
demo:
var s = str.fontsize(7);
document.write(str+"");
document.write(s);
功能:把字元串顯示為超鏈接。
參數:鏈接的URL。
demo:
var s =str.link("http://www..com");
document.write(str+"");
document.write(s);
功能:把字元串加字元串顯示。
參數:無
demo:
var s = str.strike();
document.write(str+"");
document.write(s);
以上是對字元串方法的整理,如有修改、補充,後續會更新。
文中如果紕漏,錯誤,不合理,描述不清晰,不準確等問題,歡迎大家留言指正...
⑵ JS實現字元串反轉
首先了解JavaScript中字元串和數組的區別:
①字元串是不可變的,數組是可變的。字元串不可變是指字元串的成員函數不會改變其原始值,而是創建並返回一個新的字元串。而數組的成員函數都是在其原始值上進行操作。
②數組有一個字元串沒有的可變更成員函數reserve()。
方法一:先將字元串轉化為數組,待處理完後再將結果轉化回字元串:
split()方法將一個字元串拆成字元並返回一個數組
reverse()方法使數組反轉
join()方法將數組中的所有元素邊接成一個字元串
var a="foo";
var b=a.split("")//轉化為字元串數組
.reverse()//進行反轉
.join("")//數組中的字元拼接回字元串
方法二:把字元串中的字元倒序存入數組,再將數組轉化為字元串:
var newString = [];
for(var i = a.length-1,j = 0; i >= 0; i --,j ++){
newString[j] = a[i];
};
newString.join();
⑶ JS中的String 對象及其屬性(方法)
String 對象用於處理文本(字元串):
參數是要存儲在 String 對象中或轉換成原始字元串的值 ;
通過構造函數的方式也可以把數字類型轉成字元串類型;
let str = new String(123456);
console.log(str);
字面量的方式去創建一個字元串
let str = 'he k'
1、屬性 length 字元串的長度
整個字元串(無論是內部的空格還是外部的空格)都算成長度
console.log(str.length);
字元串有length屬性 也可以被遍歷
for(var i=0;i<str.length;i++){
console.log(str[i]); }
2、 charAt() 返回在指定位置的字元(註:字元串中第一個字元的下標是0)
如果寫的索引位置找不到對應的字元 會返回一個空字元串
let a = str.charAt(6);
console.log(a);
3、concat() 連接字元串
會返回一個新的拼接後的字元串
let newstr = str.concat('itty');
console.log(newstr);
4、 replace() 用於在字元串中用一些字元替換另一些字元,或替換一個與正則表達式匹配的子串 ;
replace會把第一參數(第一個參數是屬於原字元串的字元)替換成第二個參數裡面內容
原來的字元串不會受到影響,會返回一個新的替換後的字元串
let str = "hello world";
let a = str.replace('world','kitty');
console.log(a,str);
let str = 'abc123qwe456';
5、/\d/正則表達式 代表字元串裡面的第一個數字替換成nnn
/\d+/ 表示匹配字元串裡面的所有數字當成一個整體替換成nnn
let a = str.replace(/\d+/,'nnn')
因為/\d+/ 這段正則不是全局的,所以只會改變第一個匹配項(123整體)
因為/\d/ 這段正則不是全局的,所以只會改變第一個匹配項(1)
let a = str.replace(/\d/,'n')
想讓str中所有的數字都變成n
正則裡面的g表示全局的意思 str.replace(/\d/g,'n') 可以把字元串裡面的每一個數字都變成n
正則裡面的g表示全局的意思 str.replace(/\d+/g,'n')
把字元串裡面的所有數字當成一個整體都變成n
let a = str.replace(/\d/g,'n')
console.log(a);
sort會對原數組造成影響
let arr = [4,5,1,3]
let newarr = arr.sort();
console.log(arr[0]);
let str = 'abcdefg'
eg: 通過索引找到e charAt方法, 再寫一個字元串 aaaa 拼接到str上 並答應出來新的字元串 , 把abcd替換成hello 並把替換後的字元串列印出來;
let str = 'abcdefg';
console.log(str.charAt(4));
let str2 = 'aaaa';
let newstr = str.concat(str2);
console.log(newstr);
let rstr = str.replace('abcd','hello')
console.log(rstr);
function fn(){
arguments 參數集合 是一個類數組
類數組不具有數組的方法 比如push
arguments.push(5)
es6裡面提供了一個方法 Array.from
使用Array.from把類數組轉成真正的數組,這樣就可以使用數組的方法了 比如push pop
let arr = new Array()
let arr = Array.from(arguments)
arr.push(5)
console.log(arr); }
fn(1,2,3,4)
6、split() 把一個字元串分割成字元串數組
數組轉字元串
let arr = [1,2,3];
let str = arr.join('-');
console.log(str);
let str = 'hello';
split()不加參數 會把hello這個整體放到數組當中
str.split('') 把hello這個字元串 用空字元串分割 轉化為數組
str.split(',') 如果用字元串中不存在的字元分割 那麼還是會把整體放到數組中
str.split('e') 用e當作分割符 把字元串分割成數組 ['h','llo']
str.split('l') 用l當作分割符 會變成空字元串 因為有兩個l 所以會分割成用['he', '', 'o']
let arr = str.split('l');
console.log(arr);
7、 indexOf() 返回某個指定的字元串值在字元串中首次出現的位置(★首次很重要)
let str = 'hello'
str.charAt(1) => e
和數組的indexOf一樣
let index = str.indexOf('l');
console.log(index);
8、lastIndexOf() 返回一個指定的字元串值最後出現的位置
let str = 'hello'
let index = str.lastIndexOf('l');
console.log(index);
9、 match() 可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配
let str = 'he123llo456';
str.match('o') 使用match來檢索o 可以知道o在字元串內的信息,以數組的形式返回
比如o所在的索引,o所在的字元串和o的長度
let a = str.match('o')
console.log(a);
/\d+/ 代表匹配一段整體的數字
/\d/代表匹配一個數字 g代表全局
總體來說就是 在str字元串全局內 去查找一個一個的數字
會以一個數組的形式方式
不寫g 只會返回第一個 寫g 代表全局 會查找所有
let a = str.match(/\d+/g);
console.log(a);
10、 toLowerCase() 把字元串轉換為小寫
let str = "HELLO"
let str2 = str.toLowerCase();
console.log(str2);
11、 toUpperCase() 把字元串轉換為大寫
let str = 'hello'
let str2 = str.toUpperCase();
console.log(str2);
⑷ js中String()、new String()探究
js中的基礎類型有6種
5種基礎類型:undefined null String Number Boolean
1中引用類型:Object
基礎類型的string有如下定義方式:
這三種方式有什麼區別嗎?
str1、str2是普通的字元串,str3是個對象?什麼原因呢?
用 typeof 驗證一下
用 instanceof 驗證一下
可以看出 str3 確確實實是個String對象了
再來看個有意思的事,如果給String加上自定義方法和屬性呢?
雖然 str1、str2不是對象,但可以用String上的方法和屬性
再看,如果直接給str1、str2定義方法和屬性呢?
可以看出str1、str2是不能定義自己的方法和屬性的,而str3可以
這就能看出 js 的神奇部分了,什麼原理呢?
來看包裝對象和原始資料類型
上面看到的str1、str2即為原始資料類型,str3為包裝對象,通過typeof可以看出
但str1、str2不能自己定義屬性和方法,卻可以用String的屬性和方法
總結一下
1、第一種和第二種方法定義出來的是原始資料類型,並儲存於棧中,並向包裝對象(new ..())借來方法和屬性.
2、第三種是 包裝對象,棧中儲存堆指針,堆中儲存內容。
關於堆、棧、指針的問題,咱們繼續學習
⑸ js中var str=「123456」和var str=new String(「123456」)
這么理解:
String str = "123456"; 先在內存中找是不是有"123456" 這個對象,
如果有,就讓str指向那個"123456".如果內存里沒有"123456",就創建一個新的對象保存"123456".
String str=new String ("123456") 就是不管內存里是不是已經有"123456"這個對象,
都新建一個對象保存"123456"