webForumDet fria alternativet

Stor bokstav i varje ord i en mening

9 svar · 482 visningar · startad av bigsky

bigskyMedlem sedan maj 2002821 inlägg
#1

Om en användare skickar en text via ett formulär, hur ska jag skriva så att varje ord i en mening börjar med stor bokstav?

Ex. "Detta är En mening som Jag vill Formatera om"

så att den blir så här:

"Detta Är En Mening Som Jag Vill Att Den Ska Se Ut"

jawbreakerMedlem sedan jan. 2003296 inlägg
#2

Om det bara är vid presentationen som texten ska visas på det sättet så kan du göra det med css:

<span style="text-transform: capitalize;">Detta är En mening som Jag vill Formatera om</span>
bigskyMedlem sedan maj 2002821 inlägg
#3

Nej det är vid sparandet till databasen som texten ska formateras om.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#4

Finns det någon maximal längd på den text som kommer sparas? Handlar det om en till tre meningar eller om en uppsats på 25 sidor?

bigskyMedlem sedan maj 2002821 inlägg
#5

Egentligen handlar det oftast bara om två ord. Det är namn som ska sparas med formatet "Förnamn Efternamn" och inte "förnamn efternamn".

OveRRidEMedlem sedan feb. 200112 078 inlägg
#6

Ja, är det inga groteska mängder data så kan du ju alltid göra såhär:

Dim sMyString, vMyArray, i
sMyString = "det finns inte så många versaler"
    
vMyArray = Split(sMyString, " ")
sMyString = ""
    
For i = LBound(vMyArray) To UBound(vMyArray)
   If Len(vMyArray(i)) > 0 Then sMyString = sMyString & UCase(Left(vMyArray(i), 1)) & Right(vMyArray(i), Len(vMyArray(i)) - 1) & " "
Next
sMyString = Trim(sMyString)

/red. Fel upptäckte jag.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

Eller så här. Lite enklare och bättre prestanda i.o.m. mindre konkatenerande. :)

Dim sMyString, vMyArray, i
sMyString = "det finns inte så många versaler"

vMyArray = Split(sMyString, " ")

For i = LBound(vMyArray) To UBound(vMyArray)
	vMyArray(i) = UCase(Left(vMyArray(i), 1)) & Right(vMyArray(i), Len(vMyArray(i)) - 1)
Next
sMyString = Join(vMyArray, " ")

Redigering: Fixade fel...

OveRRidEMedlem sedan feb. 200112 078 inlägg
#8

Ännu bättre. :)

bigskyMedlem sedan maj 2002821 inlägg
#9

Microsoft VBScript runtime fel '800a000d'

Type mismatch

OveRRidEMedlem sedan feb. 200112 078 inlägg
#10
Dim sMyString, vMyArray, i
sMyString = "det finns inte så många versaler"

vMyArray = Split(sMyString, " ")

For i = LBound(vMyArray) To UBound(vMyArray)
	vMyArray(i) = UCase(Left(vMyArray(i), 1)) & Right(vMyArray(i), Len([b]vMyArray(i)[/b]) - 1)
Next
sMyString = Join(vMyArray, " ")

Ah, Erik hade glömt att specificera vilket index i arrayen som skulle användas.

133 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)