কোন ট্যাগগুলিতে রয়েছে তা না জেনে আমি কীভাবে কোনও স্ট্রিং থেকে সমস্ত এইচটিএমএল ট্যাগগুলি সরিয়ে ফেলব?


121

কোনও স্ট্রিং থেকে সম্পর্কিত সমস্ত এইচটিএমএল ট্যাগ বা অন্য কোনও এইচটিএমএল সরানোর কোনও সহজ উপায় আছে কি?

উদাহরণ স্বরূপ:

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)"

উপরেরটি সত্যই হওয়া উচিত:

"হাল্ক হোগানের সেলিব্রিটি চ্যাম্পিয়নশিপ রেসলিং [প্রকল্প # 206010] (বাস্তবতা সিরিজ)"


সদৃশতার কারণে এই প্রশ্নটি বন্ধ রয়েছে তবে প্রস্তাবিত উত্তরটি এইচটিএমএল অ্যাগ্রিলিটি প্যাক ব্যবহার করে দেওয়া হয়েছে। আপনি যদি এইচটিএমএল অ্যাগিলিটি প্যাকটি ব্যবহার করে এইচটিএমএল ট্যাগগুলি সরাতে চান তবে আপনি আমার উত্তরটি এখানে stackoverflow.com/a/30026043/2318354 উল্লেখ করতে পারেন । যা
কারওর

6
এটি কোনও সদৃশ নয়, "এইচটিএমএল তত্পরতা প্যাক - সামগ্রীগুলি না সরিয়ে অযাচিত ট্যাগগুলি মুছে ফেলতে চান?" কিছু ট্যাগ রাখতে চাই (যেমন, বৈধ ট্যাগগুলির একটি তালিকা দিন, বাকীটি সরিয়ে দিন)। এই প্রশ্নটি এখানে সমস্ত ট্যাগ অপসারণ সম্পর্কে। এবং আমি অন্য প্রশ্নের উত্তরগুলি ব্যবহার করতে পারি না কারণ আমি অস্তিত্বের সমস্ত এইচটিএমএল ট্যাগের একটি তালিকাতে যাচ্ছি না।
থিয়েরি_

জিডেল একবার দেখুন । এটি আপনার সাথে 95% সময় নিয়ে যাবে xidel -s input -e '/'
জোশ হাবদাস

উত্তর:


245

আপনি এটির মতো একটি সাধারণ রেজেক্স ব্যবহার করতে পারেন:

public static string StripHTML(string input)
{
   return Regex.Replace(input, "<.*?>", String.Empty);
}

সচেতন হন যে এই সমাধানটির নিজস্ব ত্রুটি রয়েছে। আরও তথ্যের জন্য স্ট্রিংয়ের এইচটিএমএল ট্যাগগুলি সরান দেখুন (বিশেষত @ মেহাজের মন্তব্য)

আর একটি সমাধান হ'ল এইচটিএমএল অ্যাগ্রিলিটি প্যাকটি ব্যবহার করা ।
আপনি এখানে লাইব্রেরি ব্যবহার করে একটি উদাহরণ খুঁজে পেতে পারেন: এইচটিএমএল চটপটি প্যাক - সামগ্রী অপসারণ না করে অযাচিত ট্যাগগুলি সরিয়ে ফেলছেন?


2
ইনপুটটির জন্য কাজ করে না: '7 <10 <b> তবে </ b> 30> 10' এটি দেয়: '7 তবে 30> 10'
বার্তোস্জ পিয়ের্চলেউইচজ

হ্যাঁ, কারণ এটি <এবং> এর মধ্যে সমস্ত কিছু সরিয়ে দেয়, তাই আপনার ক্ষেত্রে < 10 <b>এবং </b>উভয়ই কেটে ফেলা হয়।
বিদো

2
পদ্ধতির নামগুলি প্যাসকাল কেস ব্যবহার করা উচিত বিধায় পদ্ধতির নামটি স্ট্রিপএইচটিএমএল () হওয়া উচিত নয়?
ডেভিড ক্লেম্পফনার

এটির জন্য নিয়মিত প্রকাশগুলি ব্যবহার করা সম্ভবত আপনি যদি সুরক্ষার কারণে এটি ব্যবহার করেন তবে ভাল ধারণা নয়।
ম্যাথিয়াস লাইককেগার্ড লরেঞ্জেন

3
কেবল রেজেক্সকে <[a-zA-Z /] *?> এ পরিবর্তন করুন
ব্র্যান্ডন প্রুডেন্ট

54

আপনি এইচটিএমএল অ্যাগিলিটি প্যাকটি ব্যবহার করে স্ট্রিংটিকে পার্স করতে পারেন এবং ইনারটেক্সট পেতে পারেন।

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(@"<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)");
    string result = htmlDoc.DocumentNode.InnerText;

আমি InnerTextসমাধানটি পছন্দ করি কারণ এটি সমস্ত ট্যাগ সরিয়ে দেয়। কিন্তু ... এটি পিছনে ছেড়ে &nbsp;এবং যেমন এছাড়াও মন্তব্য ট্যাগ <!-- xxx --> পার্শ্ববর্তী মত v:shapetype, v:shapeবা v:imagedataসঙ্গে [if gte vml 1]বা[if !vml]
Thierry_S

7
আমি বুঝতে পেরেছি যে &nbsp;এইচটিএমএল সত্তা, কোনও ট্যাগ নয়, তাই result = WebUtility.HtmlDecode(result);এইচটিএমএল এগ্রিলিটি প্যাকটি ব্যবহার করে মন্তব্য নোডগুলি অপসারণের সমাধান এবং সমাধানের সমাধান হতে পারে : htmlDoc.DocumentNode.SelectNodes("//comment()")?.ForEach(c=> c.Remove());করার আগেresult = htmlDoc.DocumentNode.InnerText;
থিয়েরি_স

3

আপনি আপনার স্ট্রিংয়ে নীচের কোডটি ব্যবহার করতে পারেন এবং আপনি এইচটিএমএল অংশ ছাড়াই সম্পূর্ণ স্ট্রিংটি পাবেন।

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)".Replace("&nbsp;",string.Empty);            
        string s = Regex.Replace(title, "<.*?>", String.Empty);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.