Kan man ordna detta RegEx? Intressant! det låter nog som om du inte vill använda en regex för det där.. hmm.. handlade inte en veckans fråga om just det här för ett tag sen? Hej, Ja, där är ju min lösning i RegEx =) Thomas: Jag är ute efter kod som funkar för antingen Javascript eller DotNet. [Begränsa raders längd med Reguljära Uttryck] Har du testat tipset jag skickade ovan? Thomas, jag får tyvärr fel Ops, ser en parentes för mycket, så det är nog där felet är...Utmaning!
Ta en lång textsträng (säg 2000 tkn)
splitta denna med radbryt efter 50 tkn.
- Men inte mitt i ett ord!
OM det finns mellanslag, punkt, komma, radbrytning,
20 tkn bakåt från den position radbrytningen annars skulle hamnat.
OM man bryter innan 50 (vilket sannolikt händer ofta) så måste man väl
börja om med att "räkna upp" till 50 från den senaste positionen, för resten av strängen....
phew.. tror inte man gör detta med ETT RegEx.. eller.. ? :)Sv: Utmaning!
Men om man ska kunna lösa det (om det går) vill man gärna veta vilket språk RegEx:en ska köras genom så man vet vad som är tillåtet...
Dessutom, hänger inte riktigt med i din beskrivning, ge lite exempel?
Ska den bryta mitt i ett ord om det inte finns mellanslag, punkt, komma eller radbrytning 20 tecken efter positionen där brytningen skulle hamna?
Behöver du ett mönster eller är det bara en allmän utmaning? ;)Sv: Utmaning!
Sv:Utmaning!
Detta har behandlats i en annan tråd tidigare: http://www.pellesoft.se/communicate/forum/view.aspx?msgid=174222
Där finns både kodexempel och regex exempel att modifiera för detaljerna i just detta behovet.
Lycka till!
// JohanSv: Utmaning!
Tänkte leta reda på den, men gick till affären före...Sv:Utmaning!
Men det är främst RegExp trixet jag vill lära mig (kan antagligen översätta det om det är annan dialekt)
Den kan få bryta mitt i ett ord OM det skulle finnas ett ord på mer än 20 tecken....
Sannolikheten att man skriver in ord som är mer än 20 tecken är så liten så det kan man leva med..... (eller så kan man ju för den delen välja 40 tecken.... :)
Det är nåt jag behöver - samtidigt som jag vill lära mig mer avancerade RegEx trix och därför frågar jag här... Det verkar som att ditt tips i den andra tråden kan vara till hjälp. Jag ska titta närmare på det.
Tackar!
EDIT:
Har testat nu men det funkar inte riktigt som jag hade tänkt:
<code>
Dim RegExp As RegExp
Dim Text As String
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.Global = True
RegExp.IgnoreCase = True
RegExp.Pattern = "(.{0,15})(?:,\s|$)"
Text = "Mönster för att radera bort alla nya rader i början och slut på texten. Aaaaaaaaa. Mönster för att radera bort alla nya rader i början och slut på texten. Aaa. Mönster för att radera bort alla nya rader i början och slut på texten."
Text = RegExp.Replace(Text, "$1" + vbCrLf)
'Mönster för att radera bort alla nya rader i början och slut på texten.
RegExp.Pattern = "^(?:\r?\n)*([\w\W]+?)(?:\r?\n)+$"
Text = RegExp.Replace(Text, "$1")
Set RegExp = Nothing
MsgBox (Text)
</code>
Detta borde blivit
<code>
Mönster för att
radera bort
alla nya rader
i början och
slut på texten.
</code>
Osv. (alltså när jag valde 15 tkn för att testa..)
:)
Dvs: en snyggt genomförd radbrytning helt enkelt..
Men det blir det ju inte...Sv: Utmaning!
Ovan har jag lagt in ett tips om hur man kan göra...
Dock i VB, men det är ju inte svårt att skriva om den till .NET eller Javascript.Sv: Utmaning!
Det är ordnat för att bryta mellan ord...
Om du vill fixa det du skrev här måste du ta bort kommat från mönstret...Sv:Utmaning!
5017 Application-defined or object-defined error
på sista raden
<code>
RegExp.Pattern = "([\w\W]*)(?:\r?\n)$)"
Text = RegExp.Replace(Text, "$1")
</code>
Jag har kört koden i VB6, VBScript Regular Expressions 5.5Sv: Utmaning!
Rättar till mitt tips så kan du försöka igen med den versionen =)