Just nu i M3-nätverket
Gå till innehåll

vbcrlf och mellanslag


Makarena

Rekommendera Poster

Det finns ingen sådan, det behövs inte, det är ju bara kontroll tecknen de gjort konstanter för.

 

Detta är alla:

 

vbCr Chr(13) Carriage return.

VbCrLf Chr(13) & Chr(10) Carriage return–linefeed combination.

vbFormFeed Chr(12) Form feed; not useful in Microsoft Windows.

vbLf Chr(10) Line feed.

vbNewLine Chr(13) & Chr(10) or Chr(10) Platform-specific newline character; whatever is appropriate for the platform.

vbNullChar Chr(0) Character having the value 0.

vbNullString String having value 0 Not the same as a zero-length string (""); used for calling external procedures.

vbTab Chr(9) Horizontal tab.

vbVerticalTab Chr(11) Vertical tab; not useful in Microsoft Windows.

 

 

 

Länk till kommentar
Dela på andra webbplatser

jag skulle vilja ersätta mellanslag i en textsträng med understreck _ vare sig ett mellanslag eller flera.

Hur gör jag så både 1, 2 ,3 eller flera mellanslag ersättas med en enda _ ?

 

 

 

[inlägget ändrat 2002-06-27 22:58:17 av Makarena]

Länk till kommentar
Dela på andra webbplatser

Nu är inte jag någon regexp expert men detta verkar funka som du vill:

 

<%
Set regExpOb = New RegExp

origText = "a  a            b  c d"

With regExpOb

.Pattern = " +"
.IgnoreCase = False
.Global = True

origText = .Replace( origText, "_" )

End With
Set regExpOb = Nothing
%>
<%= origText %>

 

Observera att jag testade med fler mellanslag, strängen blev "komprimerad" när jag gjorde inlägget.

 

[inlägget ändrat 2002-06-27 23:19:28 av xYzz]

Länk till kommentar
Dela på andra webbplatser

Johan Knape

Skulle gissa på att replace funktionen är mest korrekt.

 

Men kanske att du borde köra en multi replace.

 

Replace(txtTmp, "     ", "_") '5 mellanslag
Replace(txtTmp, "    ", "_") '4 mellanslag
Replace(txtTmp, "   ", "_") '3 mellanslag
Replace(txtTmp, "  ", "_") '2 mellanslag
Replace(txtTmp, " ", "_") '1 mellanslag

 

Då borde du lyckas, vet inte hur lång tid detta tar däremot och nackdelen är väl att skriver de fler än 5 mellanslag så är det kört.

 

Det ser fel ut ovan och det är för att flera mellanslag i rad blir 1 mellanslag.

[inlägget ändrat 2002-06-28 09:12:16 av Hotshot]

Länk till kommentar
Dela på andra webbplatser

Mest korrekt ? Han ville ersätta en eller flera mellanslag med EN underscore ? Är då replace mest korrekt ?

 

Nej, den koden jag gav "är mest korrekt", "HOTSHOT", för att inte säga korrekt fungerande.

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Replace ersätter vart och ett av mellanslagen med ett understreck? Var det inte så hon ville?

 

 

/JANspeed

 

Länk till kommentar
Dela på andra webbplatser

Om inte så kan man kanske göra så här?

 

Text = Replace(text, " ", "_")
while(InStr(Text, "_ "))
Text = Replace(Text, "_ ", "_")
Wend

 

 

/JANspeed

 

Länk till kommentar
Dela på andra webbplatser

Ja jag förstår inte riktigt vad som var så fel med min lösning men ok, strula ni med Replace hundra gånger som Hotshot ville eller loopa runt ;-)

 

Det går iallafall med regexp precis så som önskades snabbt och smidigt och bra.

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Johan Knape

Såg inte att din text hade blivit komprimerad, därför såg din lösning ut att fungera.

 

Men annars så verkar helt klart din enklast.

 

/Johan

 

Länk till kommentar
Dela på andra webbplatser

Men annars så verkar helt klart din enklast.

 

Tack, vart lite sur där för att den verkade så kategoriskt bli förkastad av dig ;-) och ersattes med flera replace exempel som ju inte funkar riktigt som trådskaparen ville.

 

Men regexp är ju ganska ny i VBScript så folk har väl inte riktigt vant sig vid att den finns.

 

Ditt nick är lite utmanade ochså ;-)

 

Länk till kommentar
Dela på andra webbplatser

>Men regexp är ju ganska ny i VBScript >så folk har väl inte riktigt vant sig >vid att den finns.

 

Det här "regexp" är mycket nytt för mig.

Jag får nog köra med en enklare lösning så länge...

tack ändå:)

 

Länk till kommentar
Dela på andra webbplatser

Johan Knape

Namnet Hotshot tog jag 1995 sedan har det liksom hängt på.

 

Vad är regexp för något då och vart hittar man dokumentation om den.

 

Är det IIS 4.0 / 5.0 / 5.1 som den finns i?

 

/Johan

 

Länk till kommentar
Dela på andra webbplatser

regexp kom nog med VBScript 5.0 och kan nog uppgraderas till den versionen oavsett system, antingen genom att uppgradera IE eller genom att ladda scripting host direkt.

 

regexp referensen finns på http://msdn.microsoft.com/scripting och det finns säkert en del artiklar där ochså om man söker runt.

 

 

Länk till kommentar
Dela på andra webbplatser

Nä, min replacefunktion fungerar inte för jag testade den aldrig och har tydligen tänkt baklänges.

 

while(InStr(Text, "  "))
Text = Replace(Text, "  ", " ")
Wend
Text = Replace(text, " ", "_")

 

Så ska den vara. Nu funkar den alldeles utmärkt.

 

/JANspeed

 

Länk till kommentar
Dela på andra webbplatser

> Så ska den vara. Nu funkar den alldeles utmärkt.

 

Ok, men åter igen, varför inte använda det utmärkta regexp som är just till för "mer avancerad" sträng manipulering ?

 

Loopa runt och köra replace ett antal gånger är ju inte direkt någon bra lösning.

 

Hursomhelst, fick ingen bekräftelse på om trådskaparen var nöjd med någon av lösningarna.

 

 

Länk till kommentar
Dela på andra webbplatser

Jodå, det fick du, fast ....

 

Jag ser det nu.

 

Det här "regexp" är mycket nytt för mig.

Jag får nog köra med en enklare lösning så länge...

tack ändå:)

 

Hmm, det var väl lika mycket "cut'n paste" som de andra förslagen så det funkade nog bra för dig.

 

Det är inget speciellt komplicerat (i detta fall), man sätter upp ett pattern (mönster) som man vill ersätta, i detta fall ett mellanslag och sedan ett + för att notera att flera mellanslag i rad ska ersättas, sedan kör jag med replace metoden i regexp vilket ersätter på samma sätt som vanliga replace.

 

[inlägget ändrat 2002-07-02 14:06:29 av xYzz]

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Det finns ingen konstant för mellanslag. Du kan dock använda Chr(32) om så önskas.

 

Följande konstanter finns tillgängliga i VBScript för strängar:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsconstring.asp

 

Övriga konstanter nås på:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsconvbscript.asp

 

Mvh

 

Jimmy

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Loopa runt och köra replace ett antal gånger är ju inte direkt någon bra lösning.

 

Loopa gör ju RegExp också. Frågan är om inte RegExp drar mer resurser på servern än att bara göra en loop och replace även om de troligtvis är marginella. :)

 

 

/JANspeed

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...