06. marts 2005 - 23:42
Der er
11 kommentarer og 2 løsninger
En lille streng splitter/parser
Jeg skal have lavet en splitter der laver streng "12345 67890" om til en streng der hedder "12345\n67890" Jeg vil gerne have en færdig funtion. Her er noget psudokode for at illustere hvordan private string opdel(string txt, int længde) { if (txt.count > længde) indsæt "\n" i "space" ved .count < længde; //( Hvis "space" eksisterer - ellers ved længde ) //( Der må MAX være længde mellem "\n" - der skal altså måske indsættes flere "\n") return streng med "\n" indsat; } Mvh. Teddy
Annonceindlæg fra Infor
07. marts 2005 - 07:50
#1
Du har jo skrevet hvordan den skal laves... Så er det bare at oversætte dit Psudokodet il C#...
07. marts 2005 - 10:51
#2
Ja, men jeg kan ikke rigtig lige se hvordan jeg skal lave den.
07. marts 2005 - 10:55
#3
Kan du ikke lige give et lidt "udvidet" eksempel. Skal for eksempel "123 45 678910" blive til "123\n45\n678\n910" hvis længde er 3?
07. marts 2005 - 11:53
#4
Hvorfor gøre det så kompliceret? return txt.Replace(" ", "\n");
07. marts 2005 - 11:58
#5
prec-> Hvor ikke læse spørgsmålet ordenligt? Han skriver jo også at længden af bogstaver i træk heller ikke må blive over "længde" som er en input parameter....
07. marts 2005 - 11:58
#6
bogstaver = tal
07. marts 2005 - 12:14
#7
Nå, jeg våger en løsning: private string opdel(string txt, int længde) { //String to return. string resultString = ""; //Split string into substrings by blank char. string[] strings = txt.Split(new Char[] {' '}); for(int i = 0; i <= strings.Length - 1; i++) { string s = strings[i]; if (i == strings.Length -1) { if (s.Length <= længde) resultString += s; else { resultString += s.Substring(0, længde) + "\n"; resultString += opdel(s.Substring(længde, s.Length - længde), længde); } } else { if (s.Length <= længde) resultString += s + "\n"; else { resultString += s.Substring(0, længde) + "\n"; resultString += opdel(s.Substring(længde, s.Length - længde), længde) + "\n"; } } } return resultString; }
07. marts 2005 - 12:14
#8
vover... ikke våger. DOH!
07. marts 2005 - 22:40
#9
Den virker perfekt hvis der ikke er mellemrum. Men hvis der er mellemrum, kommer der et problem. her er et eks. opdel("aaaaaaaaa aaa aaa", 10) den retunerer: "aaaaaaaaa\naaa\naaa" Hvor den skulle lave "aaaaaaaaa\naaa aaa" Jeg har godt nok ikke sagt at den skal udfulde hele længden (hvis den kan) Kan den rettes så den kan det? Den skal nemlig klippe noget tekst, og hvis den ikke "prøver" at fylde ud bliver det jo kun til: 1 ord, enter, 1 ord, enter, 1 ord.......
08. marts 2005 - 08:43
#10
Vi laver den da bare lige hurtigt om. :o) Jeg var også lidt i tvivl om hvordan den helt præcist skulle virke.
08. marts 2005 - 09:06
#11
Så kommer det stadig til at se mærkeligt ud på dine linier hvis du ikke bruger en monospaced font? 1111111111 mmmmmmmmmm med mindre den er monospaces som den der bliver brugt i skrive feltet her, men det er den ikke når den bliver vist efter man har postet det
08. marts 2005 - 09:41
#12
Prøv lige den her. Den fjerner også eventuelle startende og sluttende mellemrum. private bool StringWillBeCut(string txt, int længde) { char chSpace = ' '; if (txt.Length > længde) { if (txt[længde-1].CompareTo(chSpace) != 0 && txt[længde].CompareTo(chSpace) != 0) return true; else return false; } else return false; } private string opdel(string txt, int længde) { //String to return. string resultString = ""; char chSpace = ' '; txt = txt.TrimStart(chSpace); txt = txt.TrimEnd(chSpace); if (StringWillBeCut(txt, længde)) { //find last space, if any in substring(txt.længde). //if no space, just cut string in half at længde. string subString = txt.Substring(0, længde); int lastIndexOfSpace = subString.LastIndexOf(chSpace); if (lastIndexOfSpace >= 0) { //Space found. resultString += txt.Substring(0, lastIndexOfSpace) + "\n"; resultString += opdel(txt.Substring(lastIndexOfSpace), længde); } else { //Space not found. resultString += txt.Substring(0, længde) + "\n"; resultString += opdel(txt.Substring(længde), længde); } } else { if (txt.Length > længde) { resultString += txt.Substring(0, længde) + "\n"; resultString += opdel(txt.Substring(længde), længde); } else resultString += txt; } return resultString; }
08. marts 2005 - 22:22
#13
Den virker udemærket nu. Det hjalp med monospace :-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.