淺談javascript和java中的字串

來源:互聯網
上載者:User

標籤:

javascript字串操作  一、字串的建立

 建立一個字串有幾種方法。

1、最簡單的是用引號將一組字元包含起來  var myStr = "Hello, String!";// 在js中單雙引號沒有區別

2、可使用如下語句:var myStr1 = new String("Hello, String!");

console.log(typeof myStr);//"string"console.log(typeof myStr1);//"object"

   以上輸出結果表明:myStr是一個簡單類型變數,myStr1是一個對象

  二、字串"長度“方法

1、字串的拼接

  concat()或者“+”

2、字串的截取

  1、string.substring(from, to)   返回截取的字串

  參數分別是截取的首尾索引位置。注意:參數to的索引可以大於、小於、等於from的位置,也可以省略,不支援負數!

var str = "colin is a desinger";section = str .substring(0, 4); //  "coli"section = str .substring(4, 0); //  "coli"section = str .substring(1, 1);  //  ""section = str .substring(-2, 4);  // "coli"str .substring(0, 4);// "coli"
console.log(str) //"colin is a desinger";

   2、string.slice(start, end)  返回截取的字串

  參數start表示子串的起始位置,如果為負數,那麼可以理解為倒數第幾個開始,例如-3表示從倒數第三個開始;參數end表示結束位置,與start一 樣,   它也可以為負數,其含義也表示到倒數第幾個結束。slice()的參數可以為負數,所以要比substring()更加靈活,但沒那麼寬容了,如果 start比end要大,它將返回一個Null 字元串

var str = "colin is a desinger";section = str .slice(0, 4); //  "coli"section = str .slice(4, -1); //  "n is a desinge"section = str .slice(1, 1);  //  ""str .slice(0, 4);// ""console.log(str);//"colin is a desinger"

   3、substr(start,len)  返回截取的字串

  參數start為開始的位置,len為子字串的長度   註:不提倡用該函數(我暫時也不知道原因)

  三、字串的“位置”函數  

1、str.indexOf(searchvalue,fromindex)    返回字串中一個子串第一處出現的索引(從左至右搜尋)。如果沒有匹配項,返回 -1 。

2、str.charAt(index) 返回指定位置的字元

3、str.charCodeAt(index) 返回指定位置的字元的 Unicode 編碼。這個傳回值是 0 - 65535 之間的整數。

4、str.fromCharCode(numX,numX,...,numX) 可接受一個指定的 Unicode 值,然後返回一個字串。

  四、字串的“正則”函數  

 1、威力最強的js字串函數--> str.replace(regexp/substr,replacement)

  改方法用於在字串中用一些字元替換另一些字元,或替換一個與Regex匹配的子串。

  參數 replacement是字串:對於正則replace約定了一個特殊標記符$:

    1. $i (i:1-99) : 表示從左至右正則子運算式所匹配的文本。
    2. $&:表示與Regex匹配的全文本。
    3. $`(`:切換技能鍵):表示匹配字串的左邊文本。
    4. $’(‘:單引號):表示匹配字串的右邊文本。
    5. $$:表示$轉移。
"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy "boy".replace(/\w+/g,"$&-$&") // boy-boy "javascript".replace(/script/,"$& != $`") //javascript != java "javascript".replace(/java/,"$&$‘ is ") // javascript is script

  第二個參數為函數:

      在ECMAScript3推薦使用函數方式,實現於JavaScript1.2.當replace方法執行的時候每次都會調用該函數,傳回值作為替換的新值。

     函數參數的規定:

  1. 第一個參數為每次匹配的全文本($&)。
  2. 中間參數為子運算式匹配字串,個數不限.( $i (i:1-99))
  3. 倒數第二個參數為匹配文本字串的匹配下標位置。
  4. 最後一個參數表示字串本身。
String.prototype.capitalize = function(){     return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();     } ); };

2、str.match(rgExp) 

如果 match 方法沒有找到匹配,將返回 null。 如果找到匹配,則 match 方法返回一個數組,並將更新全域 RegExp 對象的屬性以反映匹配結果。如果沒有設定全域標誌 (g),數組元素 0 包含整個匹配,而元素 1 到 n 包含任何一個子匹配。 此行為與未設定全域標誌時 exec 方法(Regex)(JavaScript) 的行為相同。如果設定了全域標誌,則元素 0 到元素 n 包含所有出現的匹配。如果未設定全域標誌,則 match 方法返回的數組有兩個特性:input 和 index。 input 屬性包含整個被搜尋的字串。 index 屬性包含了在整個被搜尋字串中匹配的子字串的位置。如果設定了標誌 i,則搜尋不區分大小寫。

   五、其他常用方法  

1、stringObj.trim() 從字串中移除前置空格、尾隨空格和行終止符。

2、str.toLowerCase() 小寫

3、str.toUpperCase() 大寫

。。。。。。。

 六、字串屬性  

1、string.constructor  指定建立一個字串的函數。

var x = new String();if (x.constructor == String)    document.write("Object is a String.");else    document.write("Object is not a String.");// Output:// Object is a String.

2. string.prototype 為字串的類返回原型的引用。

用 prototype 屬性為對象的類提供一組準系統。 對象的新的執行個體“繼承”了賦予該對象的原型的行為。

例如,若要將方法添加到返回字串的最後一個元素的值的 String 對象,請聲明函數、將它添加到 String.prototype 並使用它。

 

function string_last( ){    return this.charAt(this.length - 1);}String.prototype.last = string_last;var myString = new String("every good boy does fine");document.write(myString.last());// Ou
 七、JavaScript 字串是不可變的 --》無法修改字串的長度。

首先請看以下代碼:

var a="java"a=a+"script"console.log(a);//"javascript"

 

  變數a對應的字串內容從”java“ 變為”javascript“,不是證明js字串是可變的嗎?(我開始學js的時候也這麼認為)

  切記:你要理解記憶體中那塊地區不能改變。即第一樣的變數a所指的記憶體位址,不是二行變數a所指的記憶體位址

最後請看下面代碼:

var lang = ‘Java‘;lang[lang.length-1] = ‘S‘;lang[lang.length-1] = ‘c‘;console.log(lang);//"java"var arr = [‘J‘, ‘a‘, ‘v‘, ‘a‘];arr[arr.length-1] = ‘S‘;console.log(arr);// [‘J‘, ‘a‘, ‘v‘, ‘S‘];
  八、巧用數組實現js數組高效拼接 
var start = new Date();var str = ""; for (var i = 0; i < 1000000; i++) {     str += "test";}var end = new Date();document.writeln("+拼接字串,耗時:" + (end.getMilliseconds() - start.getMilliseconds()));document.writeln("<br/>");var begin = new Date();var arry = new Array();for (var i = 0; i < 1000000; i++) {     arry.push("test");}arry.join("");var stop = new Date();document.writeln("數組方式拼接字串,耗時:" + (stop.getMilliseconds() - begin.getMilliseconds()));
  九、迴歸字串建立 

先看以下代碼:

var str="colin";var str1=new String("colin");str.substring(0,2); //str基本類型資料 ,為什麼可以調用substring方法? str1.substring(0,2); //str1對象

這裡為什麼str變數有substring方法,我暫時也不是很明白。我姑且認為在執行“str.substring()"代碼的一瞬間,str變成了一個對象???!!

 

java字串操作  一、字串的建立  

1、直接賦值  String str=”hello“;//這裡必須要雙引號

2、使用new關鍵字   String str=new String("hello")

兩種建立方式的異同:

  

結論:採用第二種方式建立字串時:系統會在堆記憶體中建立兩個”hello“,但是其中一個”hello“沒有的對應的棧記憶體指引,消耗多餘記憶體,垃圾空間等待被回收。

   所以推薦使用第一種方式建立字串

 二、字串的常用方法   

java的很多字串方法的名字和用法都和js字串方法類似。

1、public char charAt(int index)  返回指定索引處的 char

2、public String concat(String str) 將指定字串串連到此字串的結尾。

3、public int indexOf(String str,int fromIndex) 返回指定子字串在此字串中第一次出現處的索引,

。。。。

我覺得應該注意的幾個好玩方法:

1、public int length()  返回此字串的長度     這裡和js有著細微的區別

2、public boolean startsWith(String prefix, int toffset)  測試此字串從指定索引開始的子字串是否以指定首碼開始。

3、public boolean endsWith(String  suffix)  測試此字串是否以指定的尾碼結束。

4、public char[] toCharArray()  將此字串轉換為一個新的字元數組。

5、public void getChars(int srcBegin, int srcEnd,char[] dst,int dstBegin) 將字元從此字串複製到目標字元數組。

   三、字串打的不可變性 

看圖就可以,不多解釋

  四、”另類字串“  

1、StringBuffer sb=new StringBuffer("df");//長度可變,

   常用方法:

     append()

   insert()

     replace()

     indexOf()

2、StringBuilder sb =new StringBuilder("dsf")

     特別適用在單個線程  速度比StringBuffer快

     考慮安全執行緒時,用Stringbuffer比較好

淺談javascript和java中的字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.