2009-06-26 5 views
1

내가 찾고있는 것은 기능 테스트에 사용하기 위해 주어진 문자열의 대소 문자를 혼합하는 RegEx입니다.RegEx에서 문자열의 문자를 임의로 설정하는 경우

예 입력 :

The Quick Brown fox jumps over the Lazy Dog. 

샘플 예상 출력 : 출력이 정규식이 적용된마다 달랐다 경우

tHe QUiCk BrOwn FoX jUMPs OvER tHe lAzY dOg. 

좋을 것입니다. 예를 들어, 위의 입력, 정규식이 적용된 또 다른 시간을 주어, 출력 수 :

THe qUIcK bROwN fOX JuMpS oVeR THe lAzy DoG. 

나는 단순히 대체 테이블을 설정하는 것이 쉬울 것이다 것을 알고있다 (예를 들어, 'X'=> ' X ','B '=>'b '). 그러나 그것은 제가 찾고있는 것이 아닙니다.

Google 검색을 수행했지만 아무 것도 나오지 않았습니다.하지만 완료되었습니다. 나는 이것을 한 코드를 잃어 버렸다.

+3

문자열의 문자를 반복 할 수없고 그 방법으로 무작위로 설정할 수없는 이유가 있습니까? 어떤 언어? 진심으로 –

답변

2

: C#에서이 같은 것을 사용하여 달성 할 수 -zA-Z])/rand() < .5? UC ($ 1) : LC ($ 1)/GE, 인쇄 '

가 몇 번 실행 ... 빠른 갈색 여우가 게으른 개를 뛰어 넘는다

  • 빠른 갈색 여우 점프 지연 dog 위에
  • 빠른 헌 지연 dog
  • 빠른 헌 지연 개 위로 이동
  • 오버 점프
  • 빠른 갈색 여우 게으른 개를 뛰어 넘는다
  • 빠른 갈색 여우가 게으른 개 위로 이동
  • 빠른 갈색 여우가 게으른 개를 뛰어 넘는다
  • 빠른 갈색 여우가 게으른 개 위로 이동
+0

더블 플러스 감사합니다. – BryanH

4

RegEx은 결정적이며 무작위가 아닌 것으로 가정됩니다. ; S/([A이

펄 -e '$ _ = "빠른 갈색 여우가 게으른 개 점프"작동 펄

var random = new Random(); 
var result = new string(((IEnumerable<char>)input.ToLowerInvariant()) 
       .Select(x => random.Next(2) == 0 ? x : Char.ToUpperInvariant(x)) 
       .ToArray()); 
+1

. 간단한 대답은 "하지마."입니다. –

+0

@Daniel : 스팸 발송자에 대한 몇 가지 가능한 사용 사례를 생각해 볼 수 있습니다.) –

+0

감사합니다. 그러나 C#은 OS에 따라 다릅니다. 나는 Window 머신에서 이것을 실행하지 않는다. 대부분 헤드리스 리눅스 박스에서 동작 할 것입니다 (기능 테스트를 실행하기 위해 X + Wine/Mono를 설치하는 것은 일어나지 않을 것입니다). – BryanH

0

정규 표현식은 훌륭하지만 항상 최선의 해결책은 아닙니다. 문자의 배열로 변환 -

여기에 유일한 정규식 분할 기능에가 : 여기

당신이 원하는 것을 할 수있는 몇 가지 간단한 의사 스크립트입니다. 많은 언어가 어쨌든 문자열을 문자 배열로 처리하게하므로이 비트는 필요하지 않을 수도 있습니다.

MyArray = MyString.split('[\b\B]') 

for each (Character in MyArray) 
{ 
    if (Random(0,1) > 0.5) 
    { 
     Character = Uppercase(Character) 
    } 
    else 
    { 
     Character = Lowercase(Character) 
    } 
} 

MyString = MyArray.join() 
0

정규 표현식 일 필요는 없습니다.파이썬에서 :

>>> from random import choice 
>>> a = "lorem ipsum dolor sic amet" 
>>> ''.join(choice((c.lower, c.upper))() for c in a) 
'LoREM ipSum DoloR sic AmEt' 
관련 문제