07. august 2008 - 17:27Der er
8 kommentarer og 1 løsning
Fjern specialchars fra en string
Hej eksperter
Jeg er ved at bygge en løsning i et CMS, hvor brugeren kan uploade en PowerPoint, hvilket så opretter en CMS node for hver slide i mit CMS.
Navnet på min CMS node henter jeg fra en shape i den pågældende PowerPoint slide.
Jeg har jo meget lidt kontrol over hvad navnene således bliver, og jeg er f.eks. støt på følgende:
"\vSlide titel"
Det escapede v kan jeg ikke lige regne ud hvad betyder, men det er nok noget PowerPoint formattering.
Når der oprettes en CMS node med "\vSlide titel" som navn så går CMS sustemet UI i stykker, da det treeview der viser content noderne er lavet med JavaScript, der åbenbart brækker halsen i dette senarie.
Mit spørgsmål, hvordan undgår jeg dette, samt lignende tilfælde? Hvordan kan jeg trimme/filtrere/replace min titel string så den kun består af gængse karakterer?
using System; using System.Text.RegularExpressions;
namespace E { public class Program { private const int N = 1000000; public static void Test1() { string s = "Dette er en test"; DateTime dt1 = DateTime.Now; for(int i = 0; i < N; i++) { s = Regex.Replace(s, "[^A-Za-z0-9]", ""); } DateTime dt2 = DateTime.Now; Console.WriteLine(s); Console.WriteLine((dt2 - dt1).TotalSeconds); } public static void Test2() { string s = "Dette er en test"; DateTime dt1 = DateTime.Now; for(int i = 0; i < N; i++) { s = Regex.Replace(s, "[^A-Za-z0-9]", "", RegexOptions.Compiled); } DateTime dt2 = DateTime.Now; Console.WriteLine(s); Console.WriteLine((dt2 - dt1).TotalSeconds); } public static void Test3() { string s = "Dette er en test"; Regex re = new Regex("[^A-Za-z0-9]"); DateTime dt1 = DateTime.Now; for(int i = 0; i < N; i++) { s = re.Replace(s, ""); } DateTime dt2 = DateTime.Now; Console.WriteLine(s); Console.WriteLine((dt2 - dt1).TotalSeconds); } public static void Test4() { string s = "Dette er en test"; Regex re = new Regex("[^A-Za-z0-9]", RegexOptions.Compiled); DateTime dt1 = DateTime.Now; for(int i = 0; i < N; i++) { s = re.Replace(s, ""); } DateTime dt2 = DateTime.Now; Console.WriteLine(s); Console.WriteLine((dt2 - dt1).TotalSeconds); } public static void Main(string[] args) { Test1(); Test2(); Test3(); Test4(); Console.ReadKey(); } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.