Hvad med check om den er alfabetisk eller alfanumerisk? Og vil en for lykke ikke være rimelig sløvt hvis den ska checke ca. 10000 strings igennem som hver er på op til 50 karakterer. Jeg tror en Regex vil være bedre, men som sagt har jeg ikke så meget styr på det emne, jeg har leget lidt med det, men kunne ikke finde en løsning der virkede.
Jeg bør måske lige forklare hvorfor det er vigtigt at vide om det er numerisk, alfabetisk eller alfanumerisk. Jeg er ved at lave en converter til EDIFACT data, i det data format er der strenge regler for hvordan data må være udformet, heriblandt skal der checkes om hver data streng består af numerisk, alfabetisk eller alfanumerisk data, og da det er en meget streng standard SKAL dette checkes.
[0-9]+ og [A-Za-z]+ vil begge være sande ved alfanumerisk, så de dutter ik helt, regex udtrykket ska på en måde udelukke alfabetiske tegn i strengen der checker om den er numerisk, og omvendt.
Checking: 412132 String is numeric String is alphanumeric Checking: asdasdgfa String is alphabetic String is alphanumeric Checking: asgagf134151 String is numeric String is alphabetic String is alphanumeric
---------------------------
using System; using System.Text.RegularExpressions;
namespace regextest { class Class1 { [STAThread] static void Main(string[] args) { RegExTester t = new RegExTester(); t.CheckString("412132"); t.CheckString("asdasdgfa"); t.CheckString("asgagf134151"); Console.ReadLine(); } }
public class RegExTester { public void CheckString(string s) { Console.WriteLine("Checking: " + s); if(Regex.IsMatch(s, "[0-9]+")) Console.WriteLine("String is numeric");
if(Regex.IsMatch(s, "[a-zA-ZæÆøØåÅ]+")) Console.WriteLine("String is alphabetic");
if(Regex.IsMatch(s, "[a-zA-ZæÆøØåÅ0-9]+")) Console.WriteLine("String is alphanumeric"); } } }
IsMatch tester kun om pattern findes i strengen ikke om den matcher hele strengen.
using System; using System.Text.RegularExpressions;
namespace regextest { class Class1 { [STAThread] static void Main(string[] args) { RegExTester t = new RegExTester(); t.CheckString("412132"); t.CheckString("asdasdgfa"); t.CheckString("asgagf134151"); Console.ReadLine(); } }
public class RegExTester { public void CheckString(string s) { Console.WriteLine("Checking: " + s); if(Regex.IsMatch(s, "^[0-9]+$")) Console.WriteLine("String is numeric");
if(Regex.IsMatch(s, "^[a-zA-ZæÆøØåÅ]+$")) Console.WriteLine("String is alphabetic");
if(Regex.IsMatch(s, "^[a-zA-ZæÆøØåÅ0-9]+$")) Console.WriteLine("String is alphanumeric"); } } }
Checking: 412132 String is numeric String is alphanumeric Checking: asdasdgfa String is alphabetic String is alphanumeric Checking: asgagf134151 String is alphanumeric
using System; using System.Text.RegularExpressions;
namespace regextest { class Class1 { [STAThread] static void Main(string[] args) { RegExTester t = new RegExTester(); t.CheckString("412132"); t.CheckString("asdasdgfa"); t.CheckString("asgagf134151"); Console.ReadLine(); } }
public class RegExTester { public void CheckString(string s) { Console.WriteLine("Checking: " + s); if(s.Equals(Regex.Match(s, "[0-9]+").Value)) Console.WriteLine("String is numeric");
if(s.Equals(Regex.Match(s, "[a-zA-ZæÆøØåÅ]+").Value)) Console.WriteLine("String is alphabetic");
if(s.Equals(Regex.Match(s, "[a-zA-ZæÆøØåÅ0-9]+").Value)) Console.WriteLine("String is alphanumeric"); } } }
Checking: 412132 String is numeric String is alphanumeric Checking: asdasdgfa String is alphabetic String is alphanumeric Checking: asgagf134151 String is alphanumeric
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.