正则表达式,数字?

时间:2008-12-07 10:46:55

标签: c# regex

我制作了一个代码,用于翻译字符串以匹配数组0ne到数组2中的每个字,并显示正确的结果。但是如何让编译器取出字符串中的数字并将其打印出来,嗯,看到我写的代码


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";
        }

这里我想输入整个字符串,代码应该用数字翻译它,现在我知道怎么做这个词(通过拆分和翻译)但是数字呢?

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

如何继续?!

4 个答案:

答案 0 :(得分:4)

将正则表达式更改为[a-zA-Z0-9]+

顺便说一下,为什么不使用String.Split方法代替Regex?

答案 1 :(得分:1)

当您实际开始在法语单词上键入重音符号并且想要分割法语字符串时,此正则表达式将更有效:

\w+

在.NET中,\ w包含所有脚本中的所有字母和数字,而不仅仅是英语a-z和0-9。

答案 2 :(得分: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.'

答案 3 :(得分:0)

如果你的正则表达式引擎支持它,我使用[:alnum:](即POSIX类),使更多的可移植正则表达式。像往常一样,要小心区域设置问题。