Jag har detta pattern:
[red]
[ email](\.*)[ /email][/red]
hur får jag ut värdet mellan email-taggarna?
mvh icaaq
16 svar · 2 125 visningar · startad av icaaq
Jag har detta pattern:
[red]
[ email](\.*)[ /email][/red]
hur får jag ut värdet mellan email-taggarna?
mvh icaaq
Vet inte riktigt hur du får ut värdet men denna kod funkar för att byte "wf tagar" mot html.
text = Regex.Replace(text, "\\[B\\](?<boldText>.*)\\[/B\\]","<b>${boldText}</b>", RegexOptions.IgnoreCase);
Han kör väl antagligen en MatchCollection som plockar ut allt som matchar mönstret.
Leffo skrev:
Han kör väl antagligen en MatchCollection som plockar ut allt som matchar mönstret.
precis och jag har ändrat lite på mitt pattern
[red]
new Regex(@"\[email\](.|\s)*?\[\/email\]");
[/red]
Jag vet bara inte var jag ska sätta <1>
nån som vill hjälpa
mvh icaaq
Vad menar du med sätta <1>?
Jag och säkert många andra kan försöka hjälpa om du förklarar lite mer utförligt.
Ok Jag ska försöka att förklara lite bättre, Jag har hittat ett exempel i Doc:en där man hittar alla href´s i en text. Det förslaget ser ut så här:
[red]
Regex r;
Match m;
string t = TextToParse;
string f = "";
r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(t); m.Success; m = m.NextMatch())
{
f = "Found href " + m.Groups[1] + " at "
+ m.Groups[1].Index;
}
[/red]
Då tänkte jag att jag bara skulle byta ut detta pattern mot ett som passade mina ändamål, och mitt fungerande pattern ser ut så här:
[red]
new Regex(@"\[email\](.|\s)*?\[\/email\]");
[/red]
mvh icaaq
Jag har kommit så här långt:
[red]
Regex r;
Match m;
string t = TextToParse;
string f = "";
r = new Regex(@"\[email\](.*)\[\/email\]",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(t); m.Success; m = m.NextMatch())
{
t = Regex.Replace(t, @"\[email\](.*)\[\/email\]", ReplacementTag.Replace("##contents##", m.Groups[1].ToString()),RegexOptions.IgnoreCase|RegexOptions.Compiled);
[/red]
och den funkar ju bra men endast om man har en lala för om jag har två eller flera så blir det endast en lång länk......nån som känner sig manad att hjälpa mig?
mvh icaaq
Ok känner mig ganska ensam i denna tråd men, nu har jag kommit så här långt:
[red]
Regex r;
Match m;
string t = TextToParse;
r = new Regex(@"\[email\](.*?)\[\/email\]",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(t); m.Success; m = m.NextMatch())
{
t = Regex.Replace(t,@"\[email\](.*?)\[\/email\]", ReplacementTag.Replace("##contents##", m.Groups[1].ToString()));
}[/red]
Problemet är att alla mailadresser blir som den första, så har jag isac@meditrix.nu som första adress så resulterar alla addresser i isac@meditrix.nu
hur kan jag få det att stämma :OO
mvh icaaq
Vet inte om dt här hjälper dig, men testa iaf...
string: Texten som ska kollas
pattern: @"\[email\](.*?)\[\/email\]"
MatchCollection MC = Regex.Matches(stringen, pattern);
foreach (Match mm in MC)
{
matches = Convert.ToString(mm);
här kan du göra vilken redigering som helst om du så vill
nån_string += matches;
}
JAg har nog slitit lite väl mycket för att få detta att fungera, så här blev det:
[red]
private static string QuickTag(string TextToParse, string OpenTag, string CloseTag, string ReplacedOpenTag, string ReplacedCloseTag)
{
string t = TextToParse;
t = Regex.Replace(t, @"\["+OpenTag+@"\](?<fetch>.*)\[/"+CloseTag+@"\]", ReplacedOpenTag+"${fetch}"+ReplacedCloseTag, RegexOptions.IgnoreCase);
return t;
}
private static string Tag(string TextToParse, string OpenTag, string CloseTag, string ReplacementTag)
{
string t = TextToParse;
t = Regex.Replace(t, @"\["+OpenTag+@"\](?<contents>.*?)\["+CloseTag+@"\]", ReplacementTag.Replace("##contents##","${contents}"));
return t;
}
private static string AttributeTag(string TextToParse, string OpenTag, string CloseTag, string ReplacementTag)
{
string t = TextToParse;
t = Regex.Replace(t, @"\["+OpenTag+@"=(?<attribue>.*?)\](?<contents>.*?)\["+CloseTag+@"\]", ReplacementTag.Replace("##contents##","${contents}").Replace("##attr##", "${attribue}"));
return t;
}
[/red]
Dem anropar jag så här:
[red]
public static string Parse(string TextToParse)
{
string _p = TextToParse;
//# Här fyller du på med taggar
_p = QuickTag(_p, "[b]", "[/b]", "<b>", "</b>");
_p = QuickTag(_p, "[red]", "[/red]", "<font style='color:red;'>", "</font>");
_p = Tag(_p, "email", "/email", "<a href='mailto:##contents##'>##contents##</a>");
_p = Tag(_p, "img", "/img", "<img src='##contents##'>");
_p = AttributeTag(_p, "url", "/url", "<a target='_blank' href='##attr##'>##contents##</a>");
//# Returnerar den parsade texten.
return _p;
}
[/red]
DEnna är ju inte optimal men den funkar iaf lite ;)
mvh icaaq
Nu är den nästan klar bara själva URLIfyen som fattas och jag kan inte få till den. Jag har tagit en del av emissionens wFParser och tagit ut URLIfy koden och den ser ut så här:
[red]
Public Function ParseURLs(TextToParse,LinkTarget)
dim f_strText
f_strText=TextToParse
m_objRxp.Pattern="(^|[^""])([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:|file://|[url]telnet://[/url]|[url]gopher://[/url])([\w/#~:.,?+=&%@!\-]*?)([\s.:?\-]*[^\w/#~:.,?+=&%@!\-]|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a target=""" & LinkTarget & """ href=""$2$3"">$2$3</a>$4")
m_objRxp.Pattern="(^|[^\w/>])(www\.[\w/#~:.,?+=&%@!\-]*?)([\s.:?\-]*[^\w/#~:.,?+=&%@!\-]|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a target=""" & LinkTarget & """ href=""http://$2"">$2</a>$3")
'objRxp.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
m_objRxp.Pattern="(^|[^:>\w])([\w\.]*@[\w\.\-]*\.\w{2,3})(\b|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a href=""mailto:$2"">$2</a>")
ParseURLs=f_strText
End Function[/red]
Kanske vi kan hjälpas åt att konvertera till C# :OO
mvh icaaq
ÄNTLIGEN
Jag tror jag har lyckats att konvertera wFParser koden som emissionen skrev. Så om ni som är wF trogna skulle vilja testköra denna funktion som är skriven i C# och se om den har några buggar. Så kan vi nog skapa en slutgiltig wFParser till slut.
mvh icaaq
Trevligt icaaq, jag hade dock för mig att wFParser koden som emissionen skrev hade någon bugg, snackades om det i asp forumet någon gång för ca ett år sedan.
Jo, jag tror det har med url:ar och radbrutningar att göra.....
Jag har hittat nått mysko med koden också om ni gör en kod tag så blir det inte som det ska :( jag var tvungen att lägga till en extra < innan <p> taggen :OO
det konstiga är att den funkar perfekt vid nån av color taggarna
nån som an se felet?
mvh icaaq
Det med emissions URLify så var det ngt som inte vart korrekt.
Kommer ihåg att jag "jobbade" med den för ett bra tag sedan och fick till så att det funkade .... eller så minns jag fel.
Nu har jag inte dubbelkollat mot emissions orginal kod, men denna använder jag på en hel del ställen:
Function URLify(strInString,strTarget)
Dim strDelimiter,objRxp
strDelimiter = Chr(0)
Set objRxp = New RegExp
objRxp.Global = True
objRxp.IgnoreCase = true
objRxp.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
strInString = objRxp.Replace(strInString, "<a href=""mailto" & strDelimiter & ":$1"">$1</a>")
objRxp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:)(\S)(\S+)"
strInString = objRxp.Replace(strInString, "<a target=""" & strTarget & """ href=""$1$2" & strDelimiter & "$3"">$2" & strDelimiter & "$3</a>")
objRxp.Pattern = "(www\.(\S)(\S+))"
strInString = objRxp.Replace(strInString, "<a target=""" & strTarget & """ href=""http://$1"">$1</a>")
URLify = Replace(strInString, strDelimiter, "")
End Function
cya,
PatrikB
Då jag nu har testat min Codeify lite så ser jag att den inte funkar speciellt bra jag börjar med det lilla problem.
Hur ska jag modefiera denna för att det ska gå att använda ett <br> mellan taggarna
[red]
private static string QuickTag(string TextToParse, string OpenTag, string CloseTag, string ReplacedOpenTag, string ReplacedCloseTag)
{
string t = TextToParse;
t = Regex.Replace(t, @"\["+OpenTag+@"\][b](?<fetch>.*?)[/b]\["+CloseTag+@"\]", ReplacedOpenTag+"${fetch}"+ReplacedCloseTag, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
return t;
}
[/red]
mvh icaaq
Jag väcker denna :OO
Hur ska jag göra för att kunna använda mig av en enterslagning, (ASCII 10) mellan taggarna......det är alltså det feta som ska modifieras (tror jag)
Mvh icaaq