2008-12-07 2 views
0

Я сделал код, который переводит строки, чтобы соответствовать каждому слову от массива 0ne до массива два, и он показывает правильные результаты. Но как позволить компилятору число в строку и распечатать его, как это, Ummmm увидеть код, который я написалРегулярное выражение, цифры?


class Program 
    { 
     public static string[] E = { "i", "go", "school", "to", "at" }; 
     public static string[] A = { "Je", "vais", "ecole", "a", "a" }; 

     public static string Translate(string s) 
     { 
      string str = ""; 
      Regex Expression = new Regex(@"[a-zA-Z]+"); 
      MatchCollection M = Expression.Matches(s); 
      foreach (Match x in M) 
       str = str + " " + TranslateWord(x.ToString()); 
      return str; 
     } 

public static string TranslateWord(string s) 
     { 
      for (int i = 0; i < E.Length; i++) 
       if (s.ToLower() == E[i].ToLower()) 
        return A[i]; 
      return "Undefined"; 
     } 

здесь я хочу ввести всю строку и код должен перевести его с номером, теперь я знаю, как сделать это слово (по spliting их и перевести), но то, что о числах)

 static void Main(string[] args) 
     { 
      string str = "I go to school at 8"; 
      Console.WriteLine(Translate(str)); 
     } 

как дальше?!

ответ

4

Измените регулярное выражение для [a-zA-Z0-9]+

Кстати, почему бы вам не использовать String.Split метод вместо Regex?

+0

ну, я хочу попрактиковаться в регулярном выражении все более и более простое разделение – 2008-12-07 10:55:09

+0

Вы не можете практиковать регулярные выражения, создавая ситуации. Регулярные выражения полезны только при наличии неизвестного ввода. – Gareth 2008-12-07 10:56:34

0

Вот подсказка:

public static void process (String s) { 
    String [] tokens = s.split("\\s+"); 
    for (String token : tokens) { 
     if (token.matches("[A-Za-z]+")) { 
      System.out.println(" word: '" + token + "'"); 
     } else if (token.matches("[0-9]+")) { 
      System.out.println("number: '" + token + "'"); 
     } else { 
      System.out.println(" mixed: '" + token + "'"); 
     } 
    } 
} 

Wnen вызывается с, например, ...

process("My 23 dogs have 496 fleas."); 

... он производит следующие действия:

word: 'My' 
number: '23' 
    word: 'dogs' 
    word: 'have' 
number: '496' 
mixed: 'fleas.' 
1

Это регулярное выражение будет работать лучше, если вы на самом деле начать печатать акценты на ваших французских слов, и вы хотите разделить французский строка:

\w+ 

В .NET \ ш включает в себя все буквы и цифры из всех сценариев, а не только на английском аз и 0-9.

0

Если ваш regex engine поддерживает его, я использую [: alnum:] (то есть классы POSIX), что делает возможным использование более портативного регулярного выражения. Как обычно, остерегайтесь проблем локали.

Смежные вопросы