ในฐานะโปรแกรมเมอร์ หลังจากออกแบบเสร็จแล้ว คุณต้องปรับปรุงโปรแกรมต่อไปตามสถานการณ์ของโปรแกรมและคำติชมของผู้ใช้ เพื่อให้คุณสามารถปรับปรุงงานของคุณได้อย่างต่อเนื่อง หลังจากที่ฉันสร้างฟอรัมสำหรับ Software Business Network http://www.bizsofts.com เสร็จแล้ว ฉันพบว่าผู้คนมักชอบเพิ่มลิงก์ URL หรือที่อยู่อีเมลที่มีประโยชน์ต่างๆ ลงในโพสต์ของตน ฉันไม่ได้คำนึงถึงเรื่องนี้เมื่อออกแบบ ดังนั้นลิงก์ URL หรือที่อยู่อีเมลเหล่านี้จึงสามารถแสดงในรูปแบบข้อความแทนไฮเปอร์ลิงก์เท่านั้น บุคคลอื่นที่ดูโพสต์จะต้องคัดลอกลิงก์ URL เหล่านี้ไปยังเบราว์เซอร์ด้วย ที่อยู่ไปยัง Outlook เพื่อไปที่ที่อยู่ลิงก์ที่เกี่ยวข้องหรือส่งอีเมลไปยังที่อยู่อีเมลที่เกี่ยวข้อง
หลังจากพบปัญหานี้แล้ว ฉันก็มุ่งมั่นที่จะแก้ไข สิ่งแรกคือการค้นหารหัสปัจจุบันในพื้นที่นี้จากอินเทอร์เน็ต น่าเสียดายที่ไม่พบบทความในพื้นที่นี้หลังจากค้นหาซ้ำในเครื่องมือค้นหา จากนั้นฉันก็คิดว่าฉันอาจจะเขียนเองโดยใช้ ASP.NET ก็ได้
กุญแจสำคัญในการแสดงไฮเปอร์ลิงก์โดยอัตโนมัติคือวิธีการระบุไฮเปอร์ลิงก์อย่างถูกต้อง ไม่ต้องสงสัยเลยว่าวิธีที่มีประสิทธิภาพมากที่สุดคือการใช้นิพจน์ทั่วไป นิพจน์ทั่วไปคือรูปแบบข้อความที่ประกอบด้วยอักขระธรรมดา (เช่น อักขระ a ถึง z) และอักขระพิเศษ (เรียกว่า metaCharacters) นิพจน์เหล่านี้อธิบายรูปแบบการจับคู่สตริงและสามารถใช้เพื่อตรวจสอบว่าสตริงมีสตริงย่อยบางตัวหรือแยกออกมาหรือไม่ สตริงย่อยที่ตรงตามเงื่อนไขบางประการจากสตริงบางตัว ฯลฯ ไลบรารีคลาสพื้นฐาน .NET ประกอบด้วยเนมสเปซและชุดคลาสที่สามารถให้พลังของนิพจน์ทั่วไปได้อย่างเต็มที่ คุณสามารถใช้มันเพื่อตรวจจับลิงก์ URL หรือที่อยู่อีเมลในข้อความได้โดยอัตโนมัติ ให้ฉันอธิบายรายละเอียดวิธีใช้ ASP.NET (C#) เพื่อให้บรรลุเป้าหมายทีละขั้นตอน:
ขั้นแรก หากคุณต้องการใช้นิพจน์ทั่วไปใน ASP.NET (C#) คุณต้องรวมเนมสเปซ System.Text.RegularExpressions ด้วย:
การใช้ System.Text.RegularExpressions;
ขั้นตอนที่สองคือการใช้นิพจน์ทั่วไปเพื่อระบุไฮเปอร์ลิงก์ของ URL:
Regex urlregex = new Regex(@"(http://([w.]+/?)S*) ",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
โค้ดที่นี่ใช้นิพจน์ทั่วไปเพื่อระบุที่อยู่อีเมล:
Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+@[a-zA-Z_0 - 9.-]+.w+)",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
ขั้นตอนที่สาม เมื่อโปรแกรมระบุไฮเปอร์ลิงก์ของ URL หรือที่อยู่อีเมล ไฮเปอร์ลิงก์เหล่านี้จะต้องถูกแทนที่ด้วย <a href=...>ไฮเปอร์ลิงก์</a> ดังนั้นเท่านั้นจึงจะสามารถทำได้ ข้อความจะแสดงเป็นลิงก์ ฉันรวมพวกมันทั้งหมดไว้ในฟังก์ชันที่นี่:
private void Button1_Click(object sender, System.EventArgs e)
-
สตริง strContent = InputTextBox.Text;
Regex urlregex = Regex ใหม่(@"(http://([w.]+/?)S*)",
RegexOptions.IgnoreCase|. RegexOptions. คอมไพล์);
strContent = urlregex.Replace (strContent,
"<a href="" target="_blank"></a>");
อีเมล Regexregex = Regex ใหม่(@"([a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+.w+)",
RegexOptions.IgnoreCase|. RegexOptions. คอมไพล์);
strContent = emailregex.Replace(strContent, "<a href=mailto:></a>");
lbContent.Text += "<br>"+strContent;
}
ด้วยขั้นตอนข้างต้น คุณสามารถแสดงไฮเปอร์ลิงก์และที่อยู่อีเมลบนหน้าเว็บได้โดยอัตโนมัติ คุณสามารถดาวน์โหลดซอร์สโค้ดของตัวอย่างนี้และดูผลกระทบที่เกิดขึ้นจริงในฟอรั่มได้ที่ http://www.bizsofts.com (หมายเหตุผู้เขียน: บทความนี้ฉบับภาษาอังกฤษเผยแพร่บน CodePoject และ CodeGuru)