代码之家  ›  专栏  ›  技术社区  ›  Clément

在vb.net中使用perl regex构造?

  •  1
  • Clément  · 技术社区  · 14 年前

    在Perl中,您可以编写

    $string =~ tr/[a,e,i,o,u,y]/[A,E,I,O,U,Y]/;
    

    例如。

    有没有可能用vb.net正则表达式实现相同的“翻译”效果?

    谢谢你!

    附言:我不是在寻找一种方法来移植这个例子,这更像是一个好奇的问题:)

    2 回复  |  直到 14 年前
        1
  •  1
  •   Mark Byers    14 年前

    这方面没有标准的方法。您可以通过对输入字符串中的每个字符进行迭代,并使用字典将其映射到另一个字符(如果在字典中找不到该字符,则保持不变)。可以使用 StringBuilder 出于性能原因。

    如果性能不是问题,那么您可以使用一些替换操作来代替:

    s = s.Replace("a", "A")
         .Replace("e", "E")
         ...
         .Replace("y", "Y");
    
        2
  •  0
  •   DVK    14 年前

    有一种方法可以做到:

    public string fakeTR(string theString, char[] org, char[] rep)
    {
      for(int i=0;i<org.lenght;i++)
      {
        theString = theString.Replace(org[i], rep[i]);
      }
      return theString;
    }
    
    You would be able to call it with somewhat clunky but shorter:
    
    string v = "Black in South Dakota";
    v = fakeTR(v, new char[]{'B','l','a','c','k'}, new char[]{'W','h','i','t','e'}); 
    

    H/T http://discuss.joelonsoftware.com/default.asp?dotnet.12.306220.6