无处不飞花 發表於 2019-8-22 19:45:00

JavaScript String 对象

<h1><strong>JavaScript String 对象</strong></h1>
<p>&nbsp;</p>
<table style="height: 50px" border="1" align="left">
<tbody>
<tr>
<td>
<p>&nbsp;&nbsp;语法:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;var str1 = new String();</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; var str2 = "";</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>&nbsp;</h2>
<h2>字符串的属性</h2>
<table class="dataintable" border="1" align="left">
<tbody>
<tr><th>属性</th><th>描述</th></tr>
<tr>
<td>constructor</td>
<td>对创建该对象的函数的引用</td>
</tr>
<tr>
<td>length</td>
<td>字符串的长度</td>
</tr>
<tr>
<td>prototype</td>
<td>允许您向对象添加属性和方法</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>&nbsp;</h2>
<h2>String 对象方法&nbsp;</h2>
<table class="dataintable" style="width: 800px" border="1">
<tbody>
<tr><th>方法</th><th>描述</th></tr>
<tr>
<td>concat()</td>
<td>连接字符串。</td>
</tr>
<tr>
<td>anchor()</td>
<td>创建 HTML 锚。</td>
</tr>
<tr>
<td>big()</td>
<td>用大号字体显示字符串。</td>
</tr>
<tr>
<td>blink()</td>
<td>显示闪动字符串。</td>
</tr>
<tr>
<td>bold()</td>
<td>使用粗体显示字符串。</td>
</tr>
<tr>
<td>charAt()</td>
<td>返回在指定位置的字符。</td>
</tr>
<tr>
<td>charCodeAt()</td>
<td>返回在指定的位置的字符的 Unicode 编码。</td>
</tr>
<tr>
<td>fixed()</td>
<td>以打字机文本显示字符串。</td>
</tr>
<tr>
<td>fontcolor()</td>
<td>使用指定的颜色来显示字符串。</td>
</tr>
<tr>
<td>fontsize()</td>
<td>使用指定的尺寸来显示字符串。</td>
</tr>
<tr>
<td>fromCharCode()</td>
<td>从字符编码创建一个字符串。</td>
</tr>
<tr>
<td>indexOf()</td>
<td>检索字符串。</td>
</tr>
<tr>
<td>italics()</td>
<td>使用斜体显示字符串。</td>
</tr>
<tr>
<td>lastIndexOf()</td>
<td>从后向前搜索字符串。</td>
</tr>
<tr>
<td>link()</td>
<td>将字符串显示为链接。</td>
</tr>
<tr>
<td>match()</td>
<td>找到一个或多个正则表达式的匹配。</td>
</tr>
<tr>
<td>replace()</td>
<td>替换与正则表达式匹配的子串。</td>
</tr>
<tr>
<td>search()</td>
<td>检索与正则表达式相匹配的值。</td>
</tr>
<tr>
<td>slice()</td>
<td>提取字符串的片断,并在新的字符串中返回被提取的部分。</td>
</tr>
<tr>
<td>small()</td>
<td>使用小字号来显示字符串。</td>
</tr>
<tr>
<td>split()</td>
<td>把字符串分割为字符串数组。</td>
</tr>
<tr>
<td>strike()</td>
<td>使用删除线来显示字符串。</td>
</tr>
<tr>
<td>sub()</td>
<td>把字符串显示为下标。</td>
</tr>
<tr>
<td>substr()</td>
<td>从起始索引号提取字符串中指定数目的字符。</td>
</tr>
<tr>
<td>substring()</td>
<td>提取字符串中两个指定的索引号之间的字符。</td>
</tr>
<tr>
<td>sup()</td>
<td>把字符串显示为上标。</td>
</tr>
<tr>
<td>toSource()</td>
<td>代表对象的源代码。</td>
</tr>
<tr>
<td>toString()</td>
<td>返回字符串。</td>
</tr>
<tr>
<td>valueOf()</td>
<td>返回某个字符串对象的原始值。</td>
</tr>
</tbody>
</table>
<h3>concat()&nbsp;</h3>
<div>
<p>用于把一个或多个字符串连接到 String 对象的原始值上。该方法返回的是 String 原始值,保持原始的 String 对象不变:</p>
<table style="height: 94px; width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("hello ");
var sResult = oStringObject.concat("world");
alert(sResult);                //输出 "hello world"
alert(oStringObject);        //输出 "hello "</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>在上面这段代码中,调用 concat() 方法返回的是 "hello world",而 String 对象存放的仍然是 "hello "。出于这种原因,较常见的是用加号(+)连接字符串,因为这种形式从逻辑上表明了真正的</p>
<table style="height: 94px; width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("hello ");
var sResult = oStringObject + "world";
alert(sResult);                //输出 "hello world"
alert(oStringObject);        //输出 "hello "</pre>
</td>
</tr>
</tbody>
</table>
<h3>&nbsp;</h3>
<h3>&nbsp;</h3>
<h3>&nbsp;</h3>
<h3>&nbsp;</h3>
<h3>indexOf() 和 lastIndeOf()&nbsp;</h3>
<p>indexOf() 和 lastIndexOf() 方法返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。</p>
<p>这两个方法的不同之处在于,indexOf() 方法是从字符串的开头(位置 0)开始检索字符串,而 lastIndexOf() 方法则是从字符串的结尾开始检索子串。例如:</p>
<table style="width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("hello world!");
alert(oStringObject.indexOf("o"));                输出 "4"
alert(oStringObject.lastIndexOf("o"));        输出 "7"</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>在这里,第一个 "o" 字符串出现在位置 4,即 "hello" 中的 "o";最后一个 "o" 出现在位置 7,即 "world" 中的 "o"。如果该字符串中只有一个 "o" 字符串,那么 indexOf() 和 lastIndexOf() 方法返回的位置相同。</p>
<h3>&nbsp;</h3>
<h3>localeCompare()&nbsp;</h3>
<p>下一个方法是 localeCompare(),对字符串进行排序。该方法有一个参数 - 要进行比较的字符串,返回的是下列三个值之一:</p>
<ul>
<li>如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。</li>
<li>如果 String 对象等于参数中的字符串,返回 0。</li>
<li>如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。</li>
</ul>
<p class="note">注释:如果返回负数,那么最常见的是 -1,不过真正返回的是由实现决定的。如果返回正数,那么同样的,最常见的是 1,不过真正返回的是由实现决定的。</p>
<p>示例如下:</p>
<table style="width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("yellow");
alert(oStringObject.localeCompare("brick"));                //输出 "1"
alert(oStringObject.localeCompare("yellow"));                //输出 "0"
alert(oStringObject.localeCompare("zoo"));                //输出 "-1"</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>在这段代码中,字符串 "yellow" 与 3 个值进行了对比,即 "brick"、"yellow" 和 "zoo"。由于按照字母顺序排列,"yellow" 位于 "brick" 之后,所以 localeCompare() 返回 1;"yellow" 等于 "yellow",所以 localeCompare() 返回 0;"zoo" 位于 "yellow" 之后,localeCompare() 返回 -1。再强调一次,由于返回的值是由实现决定的,所以最好以下面的方式调用 localeCompare() 方法:</p>
<table style="width: 799px; height: 185px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject1 = new String("yellow");
var oStringObject2 = new String("brick");

var iResult = oStringObject1.localeCompare(oStringObject2);

if(iResult &lt; 0) {
alert(oStringObject1 + " comes before " + oStringObject2);
} else if (iResult &gt; 0) {
alert(oStringObject1 + " comes after " + oStringObject2);
} else {
alert("The two strings are equal");
}</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>采用这种结构,可以确保这段代码在所有实现中都能正确运行。</p>
<p>localeCompare() 方法的独特之处在于,实现所处的区域(locale,兼指国家/地区和语言)确切说明了这种方法运行的方式。在美国,英语是 ECMAScript 实现的标准语言,localeCompare() 是区分大小写的,大写字母在字母顺序上排在小写字母之后。不过,在其他区域,情况可能并非如此。</p>
<h3>&nbsp;</h3>
<h3>slice() 和 substring()</h3>
<p>ECMAScript 提供了两种方法从子串创建字符串值,即 slice() 和 substring()。这两种方法返回的都是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数(如果使用的话)是要获取子串终止前的位置(也就是说,获取终止位置处的字符不包括在返回的值内)。如果省略第二个参数,终止位就默认为字符串的长度。</p>
<p>与 concat() 方法一样,slice() 和 substring() 方法都不改变 String 对象自身的值。它们只返回原始的 String 值,保持 String 对象不变。</p>
<table style="width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("hello world");
alert(oStringObject.slice("3"));                //输出 "lo world"
alert(oStringObject.substring("3"));                //输出 "lo world"
alert(oStringObject.slice("3", "7"));                //输出 "lo w"
alert(oStringObject.substring("3", "7"));        //输出 "lo w"</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>在这个例子中,slice() 和 substring() 的用法相同,返回值也一样。当只有参数 3 时,两个方法返回的都是 "lo world",因为 "hello" 中的第二个 "l" 位于位置 3 上。当有两个参数 "3" 和 "7" 时,两个方法返回的值都是 "lo w"("world" 中的字母 "o" 位于位置 7 上,所以它不包括在结果中)。</p>
<p>为什么有两个功能完全相同的方法呢?事实上,这两个方法并不完全相同,不过只在参数为负数时,它们处理参数的方式才稍有不同。</p>
<p>对于负数参数,slice() 方法会用字符串的长度加上参数,substring() 方法则将其作为 0 处理(也就是说将忽略它)。例如:</p>
<table style="width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("hello world");
alert(oStringObject.slice("-3"));                //输出 "rld"
alert(oStringObject.substring("-3"));        //输出 "hello world"
alert(oStringObject.slice("3, -4"));                //输出 "lo w"
alert(oStringObject.substring("3, -4"));        //输出 "hel"</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>这样即可看出 slice() 和 substring() 方法的主要不同。</p>
<p>当只有参数 -3 时,slice() 返回 "rld",substring() 则返回 "hello world"。这是因为对于字符串 "hello world",slice("-3") 将被转换成 slice("8"),而 substring("-3") 将被转换成 substring("0")。</p>
<p>同样,使用参数 3 和 -4 时,差别也很明显。slice() 将被转换成 slice(3, 7),与前面的例子相同,返回 "lo w"。而 substring() 方法则将两个参数解释为 substring(3, 0),实际上即 substring(0, 3),因为 substring() 总把较小的数字作为起始位,较大的数字作为终止位。因此,substring("3, -4") 返回的是 "hel"。这里的最后一行代码用来说明如何使用这些方法。</p>
<h3>&nbsp;</h3>
<h3>toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()</h3>
<p>最后一套要讨论的方法涉及大小写转换。有 4 种方法用于执行大小写转换,即</p>
<ul>
<li>toLowerCase()</li>
<li>toLocaleLowerCase()</li>
<li>toUpperCase()</li>
<li>toLocaleUpperCase()</li>
</ul>
<p>从名字上可以看出它们的用途,前两种方法用于把字符串转换成全小写的,后两种方法用于把字符串转换成全大写的。</p>
<p>toLowerCase() 和 toUpperCase() 方法是原始的,是以 java.lang.String 中相同方法为原型实现的。</p>
<p>toLocaleLowerCase() 和 toLocaleUpperCase() 方法是基于特定的区域实现的(与 localeCompare() 方法相同)。在许多区域中,区域特定的方法都与通用的方法完全相同。不过,有几种语言对 Unicode 大小写转换应用了特定的规则(例如土耳其语),因此必须使用区域特定的方法才能进行正确的转换。</p>
<table style="width: 800px" border="1" align="left">
<tbody>
<tr>
<td>
<pre>var oStringObject = new String("Hello World");
alert(oStringObject.toLocaleUpperCase());        //输出 "HELLO WORLD"
alert(oStringObject.toUpperCase());                //输出 "HELLO WORLD"
alert(oStringObject.toLocaleLowerCase());        //输出 "hello world"
alert(oStringObject.toLowerCase());                //输出 "hello world"</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>这段代码中,toUpperCase() 和 toLocaleUpperCase() 输出的都是 "HELLO WORLD",toLowerCase() 和 toLocaleLowerCase() 输出的都是 "hello world"。一般来说,如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全。</p>
<p class="tip">提示:记住,String 对象的所有属性和方法都可应用于 String 原始值上,因为它们是伪对象。</p>
</div>
<h1><strong>&nbsp;</strong></h1>
<div>
<h2>&nbsp;</h2>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/li923/p/11395215.html
頁: [1]
查看完整版本: JavaScript String 对象