Kom ihåg mig?
Home Menu

Menu


Stoppa in en Usercontrol mitt i en string

Ämnesverktyg Visningsalternativ
Oläst 2009-04-05, 15:30 #1
Osiriss avatar
Osiris Osiris är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2006
Inlägg: 391
Osiris Osiris är inte uppkopplad
Flitig postare
Osiriss avatar
 
Reg.datum: Apr 2006
Inlägg: 391
Jag har en sträng som jag vill kunna ha "stoppord" i. Om stoppordet finns vill jag dela upp strängen till delen före- och efter stoppordet.

Så här skulle det kunna se ut vid de tillfällen stoppordet finns:
Kod:
//C#
string htmlBody = "<h1>Karta</h1><!-- Karta-00001 --><p>Ovan kan du se en karta för...</p>";
Det jag vill ha är ett sätt att kolla om <!-- Karta- finns i strängen, om den gör det så ska hela kommentaren <!-- Karta-00001 --> plockas ut, texten före och efter kommentaren läggas i en array. Längden på kommentaren kommer att vara av en exakt längd när detta förväntas fungera.

Min tanke är att kunna byta ut kommentaren mot en usercontrol som innehåller kartan.

Tips eller kodexempel mottages tacksamt.
Osiris är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-05, 16:33 #2
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Nu kör jag vb.net men split borde du kunna använda.

http://www.homeandlearn.co.uk/net/nets7p7.html
Jan Eriksson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-05, 17:03 #3
Osiriss avatar
Osiris Osiris är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2006
Inlägg: 391
Osiris Osiris är inte uppkopplad
Flitig postare
Osiriss avatar
 
Reg.datum: Apr 2006
Inlägg: 391
Tror jag har löst det, eller åtminstone kommit förbi mitt största hinder.

Postar testkoden så om du har kommentarer att ge så...
RightBack/LeftBack returnerar SubString klippt antingen från vänster eller höger.

Kod:
protected void Page_Load(object sender, EventArgs e) {
 	string htmlBody = "<h1>Karta</h1><!-- Karta-00000001 --><p>Ovan kan du se en karta för...</p>";

 	StringBuilder sb = new StringBuilder();
 	sb.Append(Server.HtmlEncode(htmlBody) + "<br />\n");
 	sb.Append(CheckForMap(htmlBody).ToString() + "\n");
 	sb.Append("<br />\n");
 	sb.Append(returnMap(htmlBody));

 	litOut.Text = sb.ToString();
 }

 protected bool CheckForMap(string input) {
 	bool val = false;

 	if (input.Contains("<!-- Karta-")) {
  val = true;
 	}

 	return val;
 }

 protected string returnMap(string input) {
 	string retVal = string.Empty;

 	Regex r = new Regex("(<!-- Karta-)"); 
 	string[] s = r.Split(input);

 	if (s[2] != null) {
  retVal = "<pre>" + wf.Util.RightBack(s[2], s[2].Length - 12) + "</pre>\n";

  //kollar kartans id
  retVal += "<br /><pre>Kartans id: " + wf.Util.LeftBack(s[2], 8) + "</pre>\n";
 	}

 	return retVal;
 }
Osiris är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-05, 18:32 #4
Oskar Lindgren Oskar Lindgren är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2004
Inlägg: 520
Oskar Lindgren Oskar Lindgren är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2004
Inlägg: 520
http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx en oneliner..
Oskar Lindgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-05, 18:53 #5
Osiriss avatar
Osiris Osiris är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2006
Inlägg: 391
Osiris Osiris är inte uppkopplad
Flitig postare
Osiriss avatar
 
Reg.datum: Apr 2006
Inlägg: 391
Citat:
Originally posted by Oskar Lindgren@Apr 5 2009, 18:32
http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx en oneliner..
Oskar, vilket problem löser Replace?
Osiris är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-05, 22:34 #6
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Detta tror jag löser ditt problem. Du får det i vb.net men du fixar nog detta.

Citat:


Dim PatternString As String
PatternString = "(?<1>[^\]]+?)<!-- Karta-(?<2>[^\]]+?) -->(?<3>.+)"

Dim r As Regex = New Regex(PatternString)

Dim m As Match

m = r.Match(htmlBody)

If m.Success Then
Dummy1 = Trim(m.Groups(1).ToString) 'Innhåller <h1>Karta</h1>
Dummy2 = Trim(m.Groups(2).ToString) 'Innhåller 00000001
Dummy3 = Trim(m.Groups(3).ToString) 'Innhåller

Ovan kan du se en karta för...</p>";
Else
Dummy0 = "Här händer det som ska hända när inte Karta finns med"
End If
Jan Eriksson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-06, 09:37 #7
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Regexp är konstruerat för just den här typen av problem - gör ett regexp-replace hur det nu kan tänkas se ut i ditt språk.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-06, 09:52 #8
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Citat:
Originally posted by martine@Apr 6 2009, 08:37

Regexp är konstruerat för just den här typen av problem - gör ett regexp-replace hur det nu kan tänkas se ut i ditt språk.
Det går väl knappast att göra en replace på textsträngen och få in en usercontrol i den? Om det går så får du gärna visa så man lär sig något nytt.
Jan Eriksson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-06, 18:37 #9
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Det går, man använder delegater. Skickar in en delegate, dvs. en pekare på en funktion, istället för en textsträng. Man kan plocka alla delarna i matchningen i realtid och ersätta texten, hur smidigt som helst. Och med anonyma delegater blir koden riktigt fin
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-04-07, 09:02 #10
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Citat:
Originally posted by Onkelborg@Apr 6 2009, 17:37
Det går, man använder delegater. Skickar in en delegate, dvs. en pekare på en funktion, istället för en textsträng. Man kan plocka alla delarna i matchningen i realtid och ersätta texten, hur smidigt som helst. Och med anonyma delegater blir koden riktigt fin
Det måste vi titta på. Alltid kul med nya saker.
Jan Eriksson är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:02.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017