法一:使用StringBuilder或StringBuffer
最簡單且高效的方法是使用StringBuilder或StringBuffer類來反轉字符串。這兩個類提供了reverse()方法,可以方便地實現字符串的反轉。
String str = "Hello, World!";
StringBuilder sb = new StringBuilder(str);
String reversedStr = sb.reverse().toString();
System.out.println(reversedStr);
通過調用StringBuilder的reverse()方法,我們可以得到一個反轉后的字符串。注意,由于reverse()方法返回的是StringBuilder對象,需要通過toString()方法將其轉換成字符串。
方法二:使用遞歸
遞歸是一種有效的反轉字符串的方法。我們可以定義一個遞歸函數,每次取字符串的最后一個字符,并將其與剩余部分連接起來。
public static String reverseString(String str) {
if (str.isEmpty())
return str;
return reverseString(str.substring(1)) + str.charAt(0);
}
String str = "Hello, World!";
String reversedStr = reverseString(str);
System.out.println(reversedStr);
通過不斷調用自身并取子字符串,我們可以逐步反轉整個字符串。這種方法雖然簡單,但當處理大量字符串時可能會導致堆棧溢出的問題,因此需謹慎使用。
方法三:使用字符數組
另一種常見的反轉字符串的方法是將字符串轉換為字符數組,然后利用循環或交換元素的方式實現反轉。
public static String reverseString(String str) {
char[] charArray = str.toCharArray();
int start = 0;
int end = str.length() - 1;
while (start < end) {
char temp = charArray[start];
charArray[start] = charArray[end];
charArray[end] = temp;
start++;
end--;
}
return new String(charArray);
}
String str = "Hello, World!";
String reversedStr = reverseString(str);
System.out.println(reversedStr);
將字符串轉換為字符數組后,我們可以使用兩個指針分別指向數組的首尾,并依次交換對應位置的元素。通過循環遍歷,最終得到反轉后的字符串。
方法四:使用Collections.reverse()
如果你希望使用Java提供的現成方法來反轉字符串,可以利用Collections類的reverse()方法。該方法可以反轉List類型的集合,因此我們可以先將字符串轉換為字符列表,然后調用reverse()方法進行反轉。
String str = "Hello, World!";
List charList = new ArrayList<>();
for (char c : str.toCharArray()) {
charList.add(c);
}
Collections.reverse(charList);
StringBuilder sb = new StringBuilder();
for (Character c : charList) {
sb.append(c);
}
String reversedStr = sb.toString();
System.out.println(reversedStr);
通過將字符串轉換為字符列表,并利用Collections.reverse()方法對其進行反轉,我們可以得到一個反轉后的字符串。最后,使用StringBuilder來拼接字符列表中的元素,得到最終結果。
絡爬蟲是一個自動提取網頁的程序,它從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
那么在這個過程中我們怎么抽取新的URL地址呢?這時候就需要解析html內容了,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,并建立索引,以便之后的查詢和檢索,從中檢索出需要的URL交給爬蟲,讓它繼續工作,整個過程就一個蜘蛛不斷建網,四通八達。
下面程序可以從頁面中提取我們想要的東西,比如標題、正文,想要深入爬取的話,我們就需要解析其中有用的URL出來。
public string url = "";
protected void Page_Load(object sender, EventArgs e)
{
url = Web.DLL.Utility.RequestUtility.GetString("url");
string op = Web.DLL.Utility.RequestUtility.GetString("op");
if (op == "getrealurl")
{
Hashtable hash = new Hashtable();
string out_link = "";
string html = GetHtml(url, Encoding.UTF8);
NSoup.Nodes.Document doc = NSoup.NSoupClient.Parse(html);
Elements elements = doc.GetElementsByClass("mod_episodes_numbers");
Elements elements_a = elements.Select("a");
foreach (var item in elements_a)
{
string text_str = item.Text();
string href_str = item.Attr("href").ToString();
out_link += "<a href=\"javascript:void(0)\" onclick=\"play('https://m.v.qq.com" + href_str + "')\">" + text_str + " <a> ";
}
HTML標簽相關的字符串格式化
string nl2br ( string $string )
nl2br() 就是將\n 替換成 <br> //javascript對\n才能夠執行換行,對</br>是不能執行換行
htmlspecialchars() 把一些預定義的字符轉換為 HTML 實體。
string htmlspecialchars(string,quotestyle,[character-set])
轉換以下字符及對應的實體
& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小于) 成為 <
> (大于) 成為 >
第二個參數: ENT_COMPAT 只轉換雙引號, 保留單引號, 為默認值 compat: 兼容性
ENT_QUOTES 同時轉換兩種引號 quotes: 引號
ENT_NOQUOTES 不對引號進行轉換
<html>
<body>
<?php
$str = "John & \" 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>
輸出結果:John & " 'Adams'
John & " 'Adams'
John & " 'Adams'
htmlentities() 可以將所有的非ASCII碼字符轉換為對應的實體代碼;除字母、數字、\外, 漢字和鍵盤上其他字符都轉換
<?php
$str = "A 'quote' \" is <b>bold</b>" ;
echo htmlentities ( $str ); // 輸出后源代碼: A 'quote' is <b>bold</b>
echo htmlentities ( $str , ENT_QUOTES ); // 輸出后源代碼: A 'quote' is <b>bold</b>
?>
返回的結果:A 'quote' "is <b>bold</b>
A 'quote' "is <b>bold</b>
注意: htmlspecialchars()和htmlentities作用直接輸出HTML腳本
htmlspecialchars()和htmlentities()函數對于轉義字符"\"處理,不會轉義實體代碼,要么當轉義字符對待,要么原樣輸出;
PHP中htmlentities和htmlspecialchars的區別
這兩個函數的功能都是轉換字符為HTML字符編碼, 特別是url和代碼字符串。防止字符標記被瀏覽器執行。
使用中文時沒什么區別, 但htmlentities會格式化中文字符使得中文輸入是亂碼。
htmlentities轉換所有的html標記, htmlspecialchars只格式化& ' " < 和 > 這幾個特殊符號
addslashes() 在指定的預定義字符前添加反斜杠。
這些預定義字符是:單引號 (') 雙引號 (") 反斜杠 (\) NULL字符(\x00)
提示:該函數可用于為存儲在數據庫中的字符串以及數據庫查詢語句準備合適的字符串。
注釋:默認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE數據自動運行 addslashes()。
不要對已經被magic_quotes_gpc轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。
遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。(如:$c=(!get_magic_quotes_gpc())?addslashes($c):$c;)
在本例中,我們要向字符串中的預定義字符添加反斜杠:
<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
輸出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
<?php
header("Content-type:text/html; charset=utf-8");
$str = "wo are \x0a studying \x00 php";
echo $str;
echo "<br>";
echo addslashes($str);
?>
輸出:
wo are studying php
wo are studying >wo are studying \0 php< php
stripslashes() 刪除反斜線("\")
在提交的表單數據中 ' " \ 等字符前被自動加上一個\ ,這是配置文件php.ini中選項magic_quotes_gpc在起作用,
默認是打開的,如果不處理則將數據保存到數據庫時,有可能會被數據庫誤當成控制符號而引起錯誤。
通常htmlspecialchars()和stripslashes()函數復合的方式,聯合處理表單中的提交的數據htmlspecialchars(stripslashes())
strip_tags()
string strip_tags ( string $str [, string $allowable_tags ] )
剝去 HTML、XML 以及 PHP 的標簽。
<?php
echo strip_tags("Hello <b><i>world!</i></b>","<b>");
?>
輸出結果:Hello world!
實例:
<?php
$str = "<b>webserver;</b> & \ 'Linux' & Apache";
echo "$str"; //直接輸出
echo "<br/>";
echo htmlspecialchars($str,ENT_COMPAT); //只轉換雙引號,為默認參數
echo "<br />";
echo htmlspecialchars($str,ENT_NOQUOTES); //不對引號進行轉換
echo "<br />";
echo htmlspecialchars($str,ENT_QUOTES); //同時轉換單引號和雙引號
echo "<br />";
echo htmlentities($str); //將所有的非ASCII碼字符轉換為對應的實體代碼
echo "<br />";
echo addslashes($str); //將" ' \ 字符前添加反斜線
echo "<br />";
echo stripslashes($str); //刪除反斜線
echo "<br />";
echo strip_tags($str); //刪除<html>標記
?>
輸出結果:
webserver; & \ 'Linux' & Apache
*請認真填寫需求信息,我們會在24小時內與您取得聯系。