webForumDet fria alternativet
Logga in / Bli medlem

RegEx problem i C#

.NET

2 svar · 295 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Trådstart#1

Har dragit igång ett gammalt project, och springer på problem med en gång.
Det är tänkbart att jag är helt ute och cyklar, en så här är kode:

private void buttonXP7_Click(object sender, System.EventArgs e)
        {
            string sText ="0";
            try
            {
                string sText = "src=\"([+\\w ]+?)\\.html?\"";
                Regex repost = new Regex(sText,RegexOptions.IgnoreCase|RegexOptions.Compiled);
                
                Match m; 
                string nr="";
                for(m = repost.Match(richTextBox1.Text);m.Success;m=m.NextMatch())
                {                            
                    if(m.Success)
                    {
                        nr=m.ToString();                        
                        MessageBox.Show(nr);
                    }
                    else
                    {
                        MessageBox.Show("Kan inte hitta någonting");
                    }
                }
            }
            catch(Exception fel)
            {
                MessageBox.Show(fel.Message,"buttonXP7_Click");;
            }
            MessageBox.Show(sText.ToString());
        }

Problemet:
I en richtextbox, så läses det in olika HTML-filer bl a med frameset.

<frame name="main3" src="top.htm" scrolling="no" marginwidth="0" marginheight="0" target="_self" noresize>

      <frame name="main4" src="loggar.htm">

      <frameset cols="3,10">
        <frame name="main5" src="navigation/left_navig.htm">

        <frame name="main2" src="main.htm" scrolling="auto" marginwidth="0" marginheight="0" target="_self">
      </frameset>
      <frame name="main6" src="fot.htm">

Som det är nu, så hittar den t ex
src="top.htm"
src="loggar.htm" osv
Men jag ville ha
top.htm
loggar.htm

Först så gäller det att hitta dem, sedan (har inte gjort den koden) så skall exstension ändras till asp.

Jag vore tacksam för hjälp här.
:r

Medlem sedan nov. 20017 144 inlägg
#2

Kan du inte replaca bort (src=) och (") i ditt resultat då?

Medlem sedan mars 20011 880 inlägg
#3

Nej det blir galet.
Jag har komit hit:
sText = "src=\"([+\\w]+?)\\.html?\"";

Nu den stora frågan, hur tar jag fram SubMatch i C#? :q
[REDIGERAT]
Jo det börja att lyckas för mig:

string nr=m.ToString();
int sStart = nr.IndexOf(@".")+1;
string sExct = nr.Substring(sStart,3);
rtf.Select(m.Index,m.Length);
string nyText=Regex.Replace(m.ToString(),sExct,"asp");
tf.SelectedText=nyText;

Hursomhelst, koden är inte riktigt bra, om vi antar att den länken som skall byttas ut heter:
index.htm så fungerar det bra.
Heten den därimot html, shtm så fungerar det inte alls. Hur bör jag göra?

Lyckan är inte helt med mig, denna bit

    \<frame name="main5" src="navigation/left_navig.htm"\>

tar han inte, alltså galet i sText...

262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)