webForumDet fria alternativet

Formatera om text

2 svar · 332 visningar · startad av annesophie

annesophieMedlem sedan juni 20012 236 inlägg
#1

Hej,

Har en produktdatabas, och för varje produkt finns en sk headline vilket är en beskrivande kortare text(rad) för produkten.
Dessa rader kopieras vanligtvis från produkternas datablad, och där uppstår problemet.

Det som t ex kan se ut såhär på databladet:
152 - 200W 4:1 MULTI OUTPUT DC/DC CONVERTER
eller
70 Watt Universal 2-Wire Input Industrial Adapter

Ser, när man kopierar det och klistrar in någon annanstans, ut såhär:
1 5 2 - 2 0 0 W 4 : 1 M U L T I O U T P U T D C / D C C O N V E R T E R
eller
7 0 W a t t U n i v e r s a l 2 - W i r e I n p u t I n d u s t r i a l A d a p t e r

Problemet med mellanrummen mellan bokstäverna gäller en (1) leverantör, så det blir inte alltid såhär, men den leverantören är också den största (såklart) och flest datablad kommer därifrån.

Raderna kan alltså se olika ut, beroende på vilken leverantörs datablad de kommer från. Ibland är det stora bokstäver, ibland små, ibland ok formatering och ibland...inte.

Det nogranna sättet hade självfallet varit att gå igenom databasen, rad för rad, och rätta till men.....det finns flera tusen produkter. Nya produkter läggs in korrekt, men de är de gamla som ställer till det.

En början är kanske att göra allt till versaler för att åtminstone få det (mer) likt, men hur fasen löser man det där med mellanrummen mellan varje frikkin bokstav för den här enda leverantören?
Man kan ju inte bara köra replace på " ", för då tappar man ju orden också och allt blir en enda lång rad av bokstäver utan mellanrum.

Är det någon som har förslag så mottages dessa tacksamt!

voigtann1Medlem sedan juni 20019 519 inlägg
#2
FunctionGetCorrectNaming(str)
	Dim myRegExp, ResultString
	Set myRegExp = New RegExp
	myRegExp.Global = True
	myRegExp.Pattern = " ([^A-ZÅÄÖ])"
	GetCorrectNaming= myRegExp.Replace(str, "$1")
	Set myRegExp = Nothing
End Function

Är för att lösa problemet att ta bort alla mellanslag framför alla bokstäver som inte är versaler.

Problemet är:
1 5 2 - 2 0 0 W 4 : 1 M U L T I O U T P U T D C / D C C O N V E R T E R

Och när det är ett tal mellan ord som:
hej1 2test ( h e j 1 2 t e s t)
Det är extremt svårt att lösa det utan man vet faktiskt skall stå, om man inte har någon ordbok eller liknande.

"H E J  P Å  D I G"

dvs med två mellanslag istället för ett

tydalMedlem sedan juni 20034 013 inlägg
#3

Mellanrummen känns som teckenkodningsproblem. Den leverantören kör högst troligen med Unicode, eller UTF-16, dvs använder två byte (16 bitar) per tecken.

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