2010-07-24 3 views
1

당신은 예를 들어VB.Net에서 펄 정규식 구문을 사용하고 계십니까? 펄에서

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

를 작성할 수 있습니다.

VB.Net 정규식과 동일한 "번역"효과를 얻을 수 있습니까?

고마워요!

PS : 나는 포트에 방법이 매우 예를 검색하고 있지 않다, 그것은 표준 방법이를위한 없다 호기심 질문 :

+1

예제는'$ string = ~ tr/aeiouy/AEIOUY /;'로 더 간결하게 작성되었습니다. – mob

+1

놀랍게도 대괄호와 쉼표는 t에 있기 때문에 그가 작성한대로 올바르게 작동한다는 것입니다 그는 두 줄의 같은 장소. 대괄호와 쉼표를 같은 문자로 바꿉니다. 교체 횟수가 줄어들지 만 자주 사용되지 않습니다. – cjm

답변

1

의 더. 입력 문자열의 각 문자를 반복하고 사전을 사용하여 다른 문자에 매핑하거나 사전에 문자가 없으면 변경하지 않고 그대로 둘 수 있습니다. 성능상의 이유로 StringBuilder을 사용하여 결과를 빌드 할 수 있습니다.

성능이 문제가되지 않는 경우 대신 작업을 대체 몇 가지를 사용할 수 있습니다

s = s.Replace("a", "A") 
    .Replace("e", "E") 
    ... 
    .Replace("y", "Y"); 
+0

내가 말했듯이이 예제의 동작을 복제하려고하지는 않지만 비슷한 구조가 있다면 지금 싶을뿐입니다. –

+0

@CFP : 그렇다면 대답은 '아니오'입니다.하지만 다음 중 하나를 사용하여 직접 작성할 수 있습니다. 내 대답 (첫 번째 단락)에서 설명한 방법. –

0

다음은이 할 수있는 한 가지 방법이다 :

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

관련 문제