avaScript的字符串就是用''或""括起來的字符表示。
如果'本身也是一個字符,那就可以用""括起來,比如"I'm OK"包含的字符是I,',m,空格,O,K這6個字符。
如果字符串內(nèi)部既包含'又包含"怎么辦?可以用轉(zhuǎn)義字符\來標識,比如:
'I\'m \"OK\"!';
表示的字符串內(nèi)容是:I'm "OK"!
轉(zhuǎn)義字符\可以轉(zhuǎn)義很多字符,比如\n表示換行,\t表示制表符,字符\本身也要轉(zhuǎn)義,所以\表示的字符就是\。
ASCII字符可以以\x##形式的十六進制表示,例如:
'\x41'; // 完全等同于 'A'
還可以用\u####表示一個Unicode字符:
'\u4e2d\u6587'; // 完全等同于 '中文'
多行字符串
由于多行字符串用\n寫起來比較費事,所以最新的ES6標準新增了一種多行字符串的表示方法,用反引號 * ... * 表示:
`這是一個 多行 字符串`;
注意:反引號在鍵盤的ESC下方,數(shù)字鍵1的左邊:
模板字符串
要把多個字符串連接起來,可以用+號連接:
var name='小明'; var age=20; var message='你好, ' + name + ', 你今年' + age + '歲了!'; alert(message);
如果有很多變量需要連接,用+號就比較麻煩。ES6新增了一種模板字符串,表示方法和上面的多行字符串一樣,但是它會自動替換字符串中的變量:
var name='小明'; var age=20; var message=`你好, ${name}, 你今年${age}歲了!`; alert(message); 'use strict'; // 如果瀏覽器支持模板字符串,將會替換字符串內(nèi)部的變量: var name='小明'; var age=20;
操作字符串
字符串常見的操作如下:
var s='Hello, world!'; s.length; // 13
要獲取字符串某個指定位置的字符,使用類似Array的下標操作,索引號從0開始:
var s='Hello, world!'; s[0]; // 'H' s[6]; // ' ' s[7]; // 'w' s[12]; // '!' s[13]; // undefined 超出范圍的索引不會報錯,但一律返回undefined
需要特別注意的是,字符串是不可變的,如果對字符串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果:
var s='Test'; s[0]='X'; alert(s); // s仍然為'Test'
JavaScript為字符串提供了一些常用方法,注意,調(diào)用這些方法本身不會改變原有字符串的內(nèi)容,而是返回一個新字符串:
toUpperCase
toUpperCase()把一個字符串全部變?yōu)榇髮懀?/p>
var s='Hello'; s.toUpperCase(); // 返回'HELLO'
toLowerCase
toLowerCase()把一個字符串全部變?yōu)樾懀?/p>
var s='Hello'; var lower=s.toLowerCase(); // 返回'hello'并賦值給變量lower lower; // 'hello'
indexOf
indexOf()會搜索指定字符串出現(xiàn)的位置:
var s='hello, world'; s.indexOf('world'); // 返回7 s.indexOf('World'); // 沒有找到指定的子串,返回-1
substring
substring()返回指定索引區(qū)間的子串:
當前互聯(lián)網(wǎng)信息爆炸的時代,高效準確地抓取和處理網(wǎng)頁內(nèi)容成為眾多領(lǐng)域必備技能。網(wǎng)絡(luò)爬蟲技術(shù)搭配強大的HTML解析庫HtmlAgilityPack,能夠自動化抽取并結(jié)構(gòu)化分析網(wǎng)頁數(shù)據(jù)。本篇我將帶領(lǐng)您深入了解如何使用C#編程語言結(jié)合HtmlAgilityPack,從HTML文檔中快速且準確地獲取文章標題。
假設(shè)我們通過網(wǎng)絡(luò)爬蟲程序成功獲取了一個網(wǎng)頁的HTML源代碼:
string htmlContent="<html><head><title>這是文章標題</title></head><body>介紹了主題和內(nèi)容...</body></html>";
為了從這段HTML文本中定位并提取出文章標題,我們可以編寫如下的C#方法:
// 定義一個靜態(tài)方法用于從HTML字符串中提取文章標題
public static string ExtractTitle(string htmlContent)
{
// 創(chuàng)建一個HtmlDocument對象以解析加載的HTML內(nèi)容
var htmlDocument=new HtmlDocument();
htmlDocument.LoadHtml(htmlContent);
// 使用XPath表達式精確匹配<head>標簽內(nèi)的<title>標簽節(jié)點
var titleNode=htmlDocument.DocumentNode.SelectSingleNode("//head/title");
// 如果找到了<title>節(jié)點,則返回其內(nèi)部文本內(nèi)容,并進行trim操作去除多余空白;否則返回提示信息
return titleNode !=null ? titleNode.InnerText.Trim() : "未找到頁面標題";
}
接下來,在主程序入口處調(diào)用此方法并顯示提取結(jié)果:
static void Main(string[] args)
{
// 假設(shè)此處的htmlContent是從網(wǎng)絡(luò)爬蟲抓取的實際HTML數(shù)據(jù)
string pageTitle=ExtractTitle(htmlContent);
// 輸出提取得到的文章標題
Console.WriteLine($"文章標題: {pageTitle}");
Console.WriteLine(new string('\n', 100)); // 輸出多行空白以便區(qū)分輸出內(nèi)容
}
可以看到這個代碼展示了C#與HtmlAgilityPack在HTML內(nèi)容解析方面的強大能力,不僅能準確無誤地從HTML文檔中摘取文章標題,而且具備極高的靈活性和擴展性。通過調(diào)整或增強XPath表達式,您可以輕松定位并抽取其他多種關(guān)鍵元素,比如正文、作者信息、發(fā)布日期等。面對日益復雜的數(shù)據(jù)抓取需求,這一技術(shù)手段將成為您的得力助手,助您從浩瀚的網(wǎng)頁信息海洋中篩選出有價值的精華內(nèi)容。不斷實踐和優(yōu)化此類解決方案,我們將在大數(shù)據(jù)時代更好地駕馭和利用網(wǎng)絡(luò)信息資源,實現(xiàn)更深層次的信息挖掘與應用。
朋友們,如果你們覺得這個案例有用,那就盡情地使用它吧!別忘了關(guān)注我,我是代碼領(lǐng)域的詩人XY,一個樂于分享的人。我熱愛與大家分享我的知識和經(jīng)驗,幫助你們解決問題,激發(fā)你們的思考。我深信,只有通過分享和交流,我們才能不斷進步,不斷創(chuàng)新。若你對更多相關(guān)話題感興趣,或者在學習工作中遇到難題,請隨時留言給我,我會為你撰寫更多相關(guān)內(nèi)容,并盡我所能幫助你解決難題。
們知道字符串(String)類型是 JavaScript 中的基本數(shù)據(jù)類型之一,也是最常用的數(shù)據(jù)類型啦。下面我們來學習一下關(guān)于字符串的屬性方法以及其的使用等。
JavaScript 字符串其實很好理解,就是被包圍在單引號或雙引號中的任意字符。字符串可以用于存儲和處理文本。
示例:
例如像下面這樣聲明的變量都是字符串類型:
var str1="123";
var str2='12356';
var str3="你好,俠課島";
var str4='hello summer';
var str5='good_boy';
一般情況下字符串就是一個或多個字符組成,除此之外,我們還可以使用 new 關(guān)鍵字將字符串定義為一個對象:
var name=new String("summer");
console.log(name); // 輸出:summer
不過一般情況下我們最好不要創(chuàng)建 String 對象,因為這可能會導致執(zhí)行速度變慢。
在 JavaScript 語言中我們可以通過索引來訪問字符串中的每個字符,字符串的索引也是從 0 開始,第一個字符索引值為 [0],第二個字符索引值為[1],以此類推。
示例:
例如下述代碼中,我們定義了一個字符串類型的變量 username,然后輸出變量中索引值為1的字符:
var username="summer";
console.log(username[1]); // 輸出: u
因為索引是從 0 開始計數(shù),那么索引為1,那應該就是字符串中的第二個字符串,也就是 u。
我們先來看下面這個字符串:
var hobby="basketball";
你能知道這個字符串的長度為多少嗎,其實你數(shù)一下就能知道,這個字符串的長度就是10。因為這個字符串有10個字符,所以它的長度為10。
這里要注意的是,字符串里面包含的空格也是會計入長度的,有1個空格長度加1,2個空格長度加2。
在 JavaScript 語言中,我們可以使用 length 屬性來獲取字符串長度,length 屬性用于返回字符串的長度(字符數(shù))。
示例:
例如獲取下面這個變量 hobby 的長度并輸出:
var hobby="basketball";
console.log(hobby.length); // 輸出:10
實際使用時,可能會遇到帶有空格的字符串,那么空格會計入字符的長度嗎,我們來看看:
var str1="hello xkd";
console.log(str1.length); // 輸出:9
通過輸出結(jié)果我們可以知道,空格也會計入字符串的長度的。
從字符串的長度和索引的關(guān)系,我們可以得出一個結(jié)論,索引是從0開始,到length-1 結(jié)束的。
有些時候,字符串可能無法被解析,例如下面這個字符串:
var str1="嘿,你好呀~,"俠課島"";
console.log(str1); // Uncaught SyntaxError: Unexpected identifier
那這個時候要怎么辦呢,我們可以使用反斜桿 \ 來轉(zhuǎn)義字符串中的雙引號。
示例:
var str1="嘿,你好呀~,\"俠課島\"";
console.log(str1); //輸出:嘿,你好呀~,"俠課島"
轉(zhuǎn)義字符\可以用于轉(zhuǎn)義撇號,換行,引號,等其他特殊字符。下面是一些可以用于轉(zhuǎn)義字符轉(zhuǎn)義的特殊字符:
字符串的方法有很多,下面我們簡單來看一些比較常用到的幾個方法:
var str1="Hello XKD";
console.log(str1.toLocaleLowerCase());
//輸出: hello xkd
var str1="Hello XKD";
console.log(str1.toUpperCase());
//輸出: HELLO XKD
var str1="Hello";
console.log(str1.toString());
//輸出: Hello
var str1="Hello";
var str2="xkd";
console.log(str1.concat(str2));
//輸出: Helloxkd
var str1="Hello xkd, Congratulations on login!";
console.log(str1.indexOf('xkd'));
//輸出: 6
var str1="Hello xkd, Congratulations on login!";
console.log(str1.lastIndexOf('o'));
//輸出: 31
var str1="Hello xkd, Congratulations on login!";
console.log(str1.slice(6, 8));
//輸出: xk
var str1="Hello xkd, Congratulations on login!";
console.log(str1.split(" "));
//輸出: ["Hello", "xkd,", "Congratulations", "on", "login!"]
var str1="Hello xkd, Congratulations on login!";
console.log(str1.substring(11, 17));
//輸出: Congra
var str1="Hello xkd, Congratulations on login!";
console.log(str1.replace("xkd", "summer"));
//輸出: Hello summer, Congratulations on login!
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。