Toon posts:

[C#] String in stukken "knippen"

Pagina: 1
Acties:
  • 199 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Heb een form op een asp.net site, maar sommigen vinden het leuk om lange strings te plakken, zodat het resultaat de tables breekt :/

Heb met google & tw gezocht (String.format({0}) enzo, maar het geeft niet wat ik wil, de string blijft doorgaan, wat kan ik hieraan doen aub?

Ik kan natuurlijk met .substring en dergelijke gaan werken, maar dat zal best een leuke methode zijn of niet? want ik wil niet dat woorden in stukken "gekapt" worden

[ Voor 6% gewijzigd door Verwijderd op 13-11-2006 16:02 ]


  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Verwijderd schreef op maandag 13 november 2006 @ 16:02:
Heb een form op een asp.net site, maar sommigen vinden het leuk om lange strings te plakken, zodat het resultaat de tables breekt :/

Heb met google & tw gezocht (String.format({0}) enzo, maar het geeft niet wat ik wil, de string blijft doorgaan, wat kan ik hieraan doen aub?

Ik kan natuurlijk met .substring en dergelijke gaan werken, maar dat zal best een leuke methode zijn of niet? want ik wil niet dat woorden in stukken "gekapt" worden
Wat is je vraag dan precies? Je hebt een lange string, en wil dat wij daar iets aan doen?

Wil je splitsen op een vaste lengte, of gewoon alles na positie x afhakken?

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


Verwijderd

En hoezo 'breekt' het de tables :? Waarom maak je er geen memo-veld van... Heb je dat probleem ook niet (vermoed ik, weet niet wat je er mee bedoelt).

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11 14:00
Als je het wilt splitsen maar geen woorden wilt breken kan je natuurlijk proberen om de laatste enter te vinden tussen letter 950 en 1000 en dan die vervangen voor een enter of de string daar splitsen in 2 strings. Als je geen enter daar vind kan je er denk ik redelijk vanuit gaan dat er iemand loopt te klooien en dus dat lange woord van over 50 tekens gewoon minder netjes afbreken.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Verwijderd schreef op maandag 13 november 2006 @ 16:02:
Ik kan natuurlijk met .substring en dergelijke gaan werken, maar dat zal best een leuke methode zijn of niet? want ik wil niet dat woorden in stukken "gekapt" worden
Je wilt alleen woorden doorknippen die langer zijn dan x tekens. Dus splits je je string eerst op returns, daarna splits je elke regel in deze string array op spaties, en de daaruit voortkomende array doorzoek je op woorden die langer zijn dan x tekens en op die positie insert je een spatie.

Bij het doorlopen van de string arrays bouw je dus meteen de originele string weer op door stukken die je gecontroleerd hebt aan elkaar te plakken.

Het probleem is echter dat niet elke letter even lang is en een reeks iiiiiiiiiiiiiiiiiii minder breed is dan hetzelfde aantal keer de letter W. Dit is ook nog eens afhankelijk van het lettertype dat wordt gebruikt. Voor het kiezen van de maximale woordlengte moet je hiermee rekening houden.

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Not Pingu schreef op maandag 13 november 2006 @ 16:30:
[...]
Het probleem is echter dat niet elke letter even lang is en een reeks iiiiiiiiiiiiiiiiiii minder breed is dan hetzelfde aantal keer de letter W. Dit is ook nog eens afhankelijk van het lettertype dat wordt gebruikt. Voor het kiezen van de maximale woordlengte moet je hiermee rekening houden.
Hiervoor zou je de MeasureString functie kunnen gebruiken. Maar dan heb je wel het graphics object nodig.
C#:
1
2
3
4
5
Image bmp = new Bitmap(100,100);
Graphics g = Graphics.FromImage(bmp); 

Font font = new Font("Arial",10); 
SizeF width = g.MeasureString("Hello", font); 

Beetje omslachtig lijkt me, maar het is volgens mij de enige optie om de breedte te berekenen.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Je berekent met "MeasureString" hoe lang de string op jouw PC is, niet hoe lang de browser 'm gaat maken. Dat weet je niet, slechtzienden met een groter font zijn altijd lastig.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Het graphics object gebruiken kan natuurlijk maar zoals opgemerkt levert dat problemen op bij mensen met een andere font-grootte. Wat je misschien wel kunt doen is bij lange woorden kijken of je een logische afbreking kunt maken zodat het er wat beter uitziet dan een random gesplitst wordt. (Denk bijvoorbeeld aan boomhuis -> boom- huis ipv boo- mhuis oid)
De implementatie hiervan is volgensmij behoorlijk ingewikkeld aangezien je met dictionaries aan de gang moet gaan maar het zou te doen kunnen zijn.

Nu met Land Rover Series 3 en Defender 90


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Verwijderd schreef op maandag 13 november 2006 @ 16:02:
Heb een form op een asp.net site, maar sommigen vinden het leuk om lange strings te plakken
Is het nodig dat je dergelijke lange strings toelaat ?
Uit je topic-start maak ik uit dat het eigenlijk de bedoeling niet is dat mensen dergelijke lange strings gaan inputten, of heb ik het verkeerd ?

https://fgheysels.github.io/


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

whoami schreef op dinsdag 14 november 2006 @ 10:05:
[...]

Is het nodig dat je dergelijke lange strings toelaat ?
Uit je topic-start maak ik uit dat het eigenlijk de bedoeling niet is dat mensen dergelijke lange strings gaan inputten, of heb ik het verkeerd ?
Zo kwam het ook op mij over. En dan is het misschien wel raadzaam om gewoon de lengte van de invoer te beperken in de HTML-code zelf, dwz het aantal karakters dat in de betreffende inputbox getypt kan worden. :)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
Is dit niet ongeveer wat je bedoelt ?

http://msdn.microsoft.com...r/dhtml/refs/wordWrap.htm

( ja, het is de site van microsoft, echter msdn is teminste makkelijk in zijn uitleg. )

[ Voor 47% gewijzigd door Fiander op 14-11-2006 10:30 . Reden: iets te snel met posten, had nog geen bericht getyped. ]

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Fiander schreef op dinsdag 14 november 2006 @ 10:28:
Is dit niet ongeveer wat je bedoelt ?

http://msdn.microsoft.com...r/dhtml/refs/wordWrap.htm

( ja, het is de site van microsoft, echter msdn is teminste makkelijk in zijn uitleg. )
Dit is redelijk IE only. Zie ook hier

Nu met Land Rover Series 3 en Defender 90


  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
het is anders voor zover ik weet standaard onderdeel van css3 :?

http://www.w3.org/TR/css3-text/

[ Voor 15% gewijzigd door Fiander op 14-11-2006 10:38 . Reden: formulering ]

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


  • planB
  • Registratie: Juli 2006
  • Laatst online: 19:36
Je kan je table ook de property style="table-layout: fixed;" meegeven.

Daarmee voorkom je dat je table "resized" naar de lengte van de inhoud van een cel.

(Wel even bij de cellen een width opgeven.)

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Fiander schreef op dinsdag 14 november 2006 @ 10:38:
het is anders voor zover ik weet standaard onderdeel van css3 :?

http://www.w3.org/TR/css3-text/
Ja en we weten allemaal dat CSS3 overal perfect geimplementeerd is: test zelf hier of zie hier. IE doet dit dan weer wel maar FF geeft je de vinger.

Overigens is word-wrap al sinds IE5.5 een proprietary MS ding.

[ Voor 7% gewijzigd door MTWZZ op 14-11-2006 11:01 ]

Nu met Land Rover Series 3 en Defender 90


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

whoami schreef op dinsdag 14 november 2006 @ 10:05:
[...]

Is het nodig dat je dergelijke lange strings toelaat ?
Uit je topic-start maak ik uit dat het eigenlijk de bedoeling niet is dat mensen dergelijke lange strings gaan inputten, of heb ik het verkeerd ?
Als ik het zo lees mogen mensen wel lange strings invoeren, maar wordt een stukje whitespace per 50 characters wel op prijs gesteld.

Een simpele overflow:scroll of overflow:hidden in de CSS lijkt me het simpelste.

Professionele website nodig?

Pagina: 1