1.Javascript擷取字串的兩個方法

luxika發表於2012-04-10
1.Javascript擷取字串的兩個方法
1.substr 方法
返回一個從指定位置開始的指定長度的子字串。
stringvar.substr(start [, length ])
引數
stringvar 必選項,要提取子字串的字串文字或String物件。
start 必選項,所需的子字串的起始位置。字串中的第一個字元的索引為0。
length 可選項,在返回的子字串中應包括的字元個數。
說明,如果length為0或負數,將返回一個空字串。如果沒有指定該引數,則子字串將延續到stringvar 的最後。
示例
下面的示例演示了substr方法的用法。

function SubstrDemo(){
var s, ss; // 宣告變數。
var s = "The rain in Spain falls mainly in the plain.";
ss = s.substr(12, 5); // 獲取子字串。
return(ss); // 返回 "Spain"。
}
2.substring方法
返回位於String物件中指定位置的子字串。
strVariable.substring(start, end)
"String Literal".substring(start, end)
引數
start 指明子字串的起始位置,該索引從 0 開始起算。
end 指明子字串的結束位置,該索引從 0 開始起算。
說明
substring 方法將返回一個包含從start到最後(不包含end)的子字串的字串。
substring方法使用start和end兩者中的較小值作為子字串的起始點。例如:strvar.substring(0, 3)和strvar.substring(3, 0)將返回相同的。

3.正確擷取單位元組和雙位元組混和字串的方法

<script type="text/javascript">
/*************************************************************
Author : Yanfu Xie <xieyanfu@yahoo.com.cn>
Url : http://www.yitu.org
Description : 正確擷取單位元組和雙位元組混和字串
String str : 要擷取的字串
Number : 擷取長度
*************************************************************/
function substr(str, len)
{
if(!str || !len) { return ''; }
//預期計數:中文2位元組,英文1位元組
var a = 0;
//迴圈計數
var i = 0;
//臨時字串
var temp = '';
for (i=0;i<str.length;i++)
{
if (str.charCodeAt(i)>255)
{
//按照預期計數增加2
a+=2;
}
else
{
a++;
}
//如果增加計數後長度大於限定長度,就直接返回臨時字串
if(a > len) { return temp; }
//將當前內容加到臨時字串
temp += str.charAt(i);
}
//如果全部是單位元組字元,就直接返回源字串
return str;
}
var str = "呵呵he哈哈嘿嘿and";
document.write("字串:<font color='red'>"+str+"</font><br /><br />");
document.write("javascript 預設擷取10個位元組的返回值:<br />");
document.write("<font color='red'>"+str.substr(0, 10)+"</font><br /><br />");
document.write("用本文介紹的方法擷取10個位元組的返回值:<br />");
document.write("<font color='red'>"+substr(str, 10)+"</font><br /><br />");
document.write("擷取9個位元組的返回值:<br />");
document.write("<font color='red'>"+substr(str, 9)+"</font><br /><br />");
</script>

還有更簡單的方法(正則)
<script>
a="中文測試"
b="51js.com"
function dd(str,c){document.write(str.replace(/([\u0391-\uffe5])/ig,'$1a').substring(0,c).replace(/([\u0391-\uffe5])a/ig,'$1')+"<br/>")}
dd(a,8);
dd(b,8);
</script>
===================================
分割線
===================================
怎麼用JavaScript實現

程式設計:編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。

以前寫的一個Cs類,但現在突然用到JAvaScript,有點茫然了
public static string ToCut(string inputString,int len)
{
int tempLen=0;
string tempString= " ";
inputString=LoseHtml(inputString);
ASCIIEncoding ascii = new ASCIIEncoding();

byte[] s = ascii.GetBytes(inputString);
for(int i=0;i <s.Length;i++)
{
if((int)s[i]==63)
{
tempLen+=2;
}
else
{
tempLen+=1;
}

try
{
tempString+=inputString.Substring(i,1);
}
catch
{
break;
}

if(tempLen> len)
break;
}
//如果截過則加上半個省略號
byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
if(mybyte.Length> len)
tempString=tempString.Substring(0,tempString.Length-3==0?1:tempString.Length-3)+ "… ";

return tempString;
}

===================================
分割線
===================================

一個JavaScript基礎技巧,根據一串字串中規定的字元,獲取該字元以左或以右的字串,以本例中的電子郵箱為例,它可以獲取郵箱的使用者名稱,而將使用者名稱以外的字元拋棄掉,本例項應該是比較實用的。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JavaScript擷取字串</title>
</head>
<body>
<input id="x" type="text"/>
<input type="button" onclick="x()" value="輸入郵件地址,獲取使用者名稱"/>
<script>
function x(){
var x=document.getElementById("x").value.toString();
var c=x.split("@");
document.getElementById("x").value=c[0];
}
</script>
</body>
</html>

關於js split的用法其它也不多說什麼,下面直接舉例給大家看看
複製程式碼程式碼如下:

<script language="javascript">
str="2,2,3,5,6,6"; //這是一字串
var strs= new Array(); //定義一陣列

strs=str.split(","); //字元分割
for (i=0;i<strs.length ;i++ )
{
document.write(strs[i]+"<br/>"); //分割後的字元輸出
}
</script>

輸出結果就是
複製程式碼程式碼如下:

2
2
3
5
6
6

js split就是將一字串以特定的字元分割成多個字串,大家應當一看就懂了吧。

相關文章