2016-10-12 3 views
3

Ich versuche mit Regular Expression und ich habe die folgende Zeichenfolge:C# Regulärer Ausdruck: Druck Strings unterscheidet sich von dem Muster

M3A4S0S3I2M1O4 
M3a4s0s3i2m1o4 
m3a4s0s3i2m1o4 
F3a4i0l4l1a6 
30470041106042700156 
30470031201042506146 

Das Bespannbild ist string pattern = @"\D"; und ich möchte drucken:

M3A4S0S3I2M1O4 
M3a4s0s3i2m1o4 
m3a4s0s3i2m1o4 
F3a4i0l4l1a6 

Weil es Übereinstimmungen in dieser Zeichenfolge findet. Ich drucke 30470041106042700156 30470031201042506146 nicht, weil es keine Übereinstimmungen findet. Ich schreibe den Code:

using System; 
using System.Text.RegularExpressions; 

public class Example 
{ 
    public static void Main() 
    { 
     string pattern = @"\D"; 
     string input = @"M3A4S0S3I2M1O4 M3a4s0s3i2m1o4 m3a4s0s3i2m1o4 F3a4i0l4l1a6 30470041106042700156 30470031201042506146"; 

Aber ich weiß nicht, wie kann ich es beenden. Wie kann ich reparieren?

+0

Sie wollen eine mehrzeilige Zeichenfolge oder einfach Test gegen separate Leitungen verarbeiten? Sollte es 'List Eingang = neue Liste () {" M3A4S0S3I2M1O4 ", ...}'? –

Antwort

2
using System; 
using System.Text.RegularExpressions; 

public class Program { 
    public static void Main() { 
     string[] input = { "M3A4S0S3I2M1O4", "M3a4s0s3i2m1o4", "m3a4s0s3i2m1o4", "F3a4i0l4l1a6", "30470041106042700156", "30470031201042506146" }; 
     foreach (var line in input) 
      if (Regex.IsMatch(line, @"\D")) 
       Console.WriteLine(line); 
    } 
} 

Ausgabe

M3A4S0S3I2M1O4 
M3a4s0s3i2m1o4 
m3a4s0s3i2m1o4 
F3a4i0l4l1a6 
1

Sie brauchen nicht einen regulären Ausdruck hier eigentlich eine einfache Split verwenden, verbinden und LINQ:

string input = @"M3A4S0S3I2M1O4 
M3a4s0s3i2m1o4 
m3a4s0s3i2m1o4 
F3a4i0l4l1a6 
30470041106042700156 
30470031201042506146"; 
string res = string.Join("\r\n", input.Split(new[] {"\r\n"}, StringSplitOptions.None) 
     .Where(line => !line.All(Char.IsDigit)) 
     .ToArray()); 

Der .Where(line => !line.All(Char.IsDigit)) Teil hält nur die Zeilen, die sind nicht alle Ziffern.

Wenn Sie eine Liste von Zeichenfolgen haben, ersetzen Sie string.Join("\r\n", input.Split(new[] {"\r\n"}, StringSplitOptions.None) durch Ihre Listenvariable und lassen Sie string.Join aus.

enter image description here