ببخشيد add range چيه؟
شرمنده من خيلي مبتديم.متوجه منظورتون نشدم
Printable View
ببخشيد add range چيه؟
شرمنده من خيلي مبتديم.متوجه منظورتون نشدم
بنام خدا.
سلام.
کد:listBox1.Items.AddRange(GetThisPageItems(strFileName).ToArray());
ببخشيد شرمندم زياد سوال ميپرسم.
من كد رو تغيير دادم ولي وقتي يه فايل مثل اين رو باز ميكنم كه توش چند تا لينك هست هيچي تو ليست باكس نشون
نميده:(
[HTML]
<html>
<head>
<title></title>
<body>
<a href="http://www.fac.com"></a>
<a href ="www.gol.com"></a>
<a href="www.raha.net"></a>
</body>
</html>
[/HTML]
بنام خدا.
سلام.
من html شمارو تست کردم هر سه تا لینک رو توی لیست اضافه کرد.مشکل از کدهای شماست.
لطفاً بررسی کنید یا اگه نمیتونید مشکل رو پیدا کنید کدتونو اینجا قرار بدید.
موفق باشید.
[HTML]
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Text files (*.txt) |*.txt|"
+ " All files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Demo Open File Dialog";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// Save the file name
strFileName = openFileDialog1.FileName;
// Read the contents of the file
txtFile.Text =
System.IO.File.ReadAllText(strFileName);
}
listBox1.Items.AddRange(GetThisPageItems(strFileNa me).ToArray());
}
public List<string> GetThisPageItems(string html)
{
Regex r;
Match m;
r = new Regex("<a href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
List<string> items = new List<string>();
for (m = r.Match(html); m.Success; m = m.NextMatch())
{
string txt = m.Groups[1].Value;
if (!items.Contains(txt) && (txt.Contains("http://") || txt.Contains("www.")))
items.Add(txt);
}
return items;
}
[/HTML]
يه كد ساده س ولي نميدونم مشكلش كجاس ممنون كه جواب ميدين تشكرواقعا
بنام خدا.
سلام.
در کد شما strFileName آدرس فایل شماست.برای همین در رشته مورد نظر هیچ لینکی وجود ندارد و فقط یک آدرس است.
شما باید محتوای فایلتونو به تابعی که بهتون دادم بفرستید.
موفق باشید در پناه حق.کد:listBox1.Items.AddRange(GetThisPageItems(txtFile.Text).ToArray());
واقعا ممنون جدا نميدونم بايد چه طور بايد ازتون تشكر كنم
واقعا اين تشكر من در قبال وقتي كه شما براي من گذاشتين ناچيزه ولي بازم ممنونم:):11:
بازم سلام
اقاي علي اميدوارم بازم جواب بدين بهم.
در مورد اون تابع regex كه تو برنامه استفاده شده يه سوال داشتم.اون تابع رو من تو گوگل خيلي سرچ كردم
مدلهاي متفاوتش هست كه لينكاي يه صفحه رو در بياره .شما بر چه اساسي اونو نوشتين؟ميشه يكم
برام توضيحش بدين.و اون دستور regexoptions.compiled براي چيه؟اون قبلي براي اينكه بين حروف بزرگ و كوچيك تفاوت قايل نشه ولي اينو نميدونم.بگين ممنون ميشم.
بنام الله.
سلام.
آموزش Regax کار ساده ای نیست.
شما باید توی اینترنت دنبال آموزش تکنیک Regax بگردید و اطلاعاتی کسب کنید.
ویدئو های خارجی جالبی وجود داره که میتونید دانلود کنید.
هر وقت خواستید در یک فایل متنی عملیات سنگین مدیریت رشته ای انجام بدید باید از Regax استفاده کنید.
RegexOptions.Compiled هم اونطور که من شنیدم برای بهینه کردن سرعت هست.
دو کتاب آموزش Regax:
کد:http://aqlinux.ir/files/regex.pdf
کد:http://myoopc.persiangig.com/Lect05.pdf
خيلي ممنونم.
يكي هم در مورد اين خط هايي كه پايين ميذارم سوال داشتم واقعا شرمنده.
اين for كه استفاده شده مگه براي تشخيص اين نيست كه لينكي كه پيدا شده تكراري نباشه خب ما كه قبلا
محتواي لينكو از طريق group ريختيم توي متغير txt خب يعني اگه http يا www داشته باشه هم تو اون متيغير ذخيره شده ديگه پس چرا داخل for دوباره اشاره به اين ميكنه كه اگه داخل تگ http يا www نباشه و برابر مقدار متغير txt نباشه؟يعني داخل group اون اطلاعات ذخيره نميشه؟
---------- Post added at 10:39 PM ---------- Previous post was at 10:38 PM ----------
كد رو يادم رف بذازم
[HTML]
string txt = m.Groups[1].Value;
if (!items.Contains(txt) && (txt.Contains("http://") || txt.Contains("www."))
items.Add(txt);
[/HTML]