2009-03-27 3 views
1

:문자열의 각 알파벳 교체? 내가 지금까지 쓴 무엇

string omgwut; 
omgwut = textBox1.Text; 
omgwut = omgwut.Replace(" ", "snd\\space.wav"); 
omgwut = omgwut.Replace("a", "snd\\a.wav"); 

자, 문제는이 코드 라인 사에

"snd\spsnd\a.wavce.wsnd\a.wavv" 

"snd\space.wav" 

를 설정 할 것입니다. 내가 원하는게 아니야! 이제 저는 C#이 잘 안된다는 것을 알고 있습니다. 그래서 그것이 제가 묻는 이유입니다.

솔루션은 훌륭합니다! 감사!

+0

자세한 정보가 필요합니다. 텍스트 상자에 표시되는 실제 텍스트의 예는 무엇입니까? –

+0

@ a2h : 게시물을 읽는 데 어려움을 겪었습니다. 지금은 더 읽을 수 있다고 생각합니다. 편집을 좋아하지 않으면 자유롭게 되돌릴 수 있습니다. – Tomalak

답변

3

당신은 여전히 ​​getSoundForChar() 함수를 작성해야하지만, 이것은 당신이 원하는 것을 할 것입니다. 그래도 묻고있는 것이 원하는대로, 즉 관련 캐릭터의 사운드를 재생할 수 있는지 확실하지 않습니다. 그것에 대해 문자열 >에 넣는 것이 더 나을 것입니다.

public string getSoundForChar(char c) 
{ 
    string sound = null; 
    if (sound == " ") 
    { 
     sound = "snd\\space.wav"; 
    } 
    ... handle other special characters 
    else 
    { 
     sound = string.Format("snd\\{0}.wav", c); 
    } 
    return sound; 
} 
+0

형식 또는 네임 스페이스 이름 'StringBuilder'을 찾을 수 없습니다 (사용 지시문이나 어셈블리 참조가 없습니까) – unrelativity

+0

"using System.Text;"를 추가하십시오. 파일의 맨 위에. – atsjoo

+0

그리고 나는 사람들이 질문 할 때 무슨 뜻인지 알아 내는데 능숙하다고 생각했습니다. 나는 그가 정말로 묻고있는 것을 당신이 이해했음을 감동했습니다. –

1

문제는 여러 번 데이터를 전달하는 것입니다. 루프에서 문자열의 문자를 단계별로 실행하고 'from'문자를 'to'문자열로 바꿔보십시오. 그런 식으로 당신은 문자열을 되돌려 놓고 이미 대체 된 문자들을 다시하지 않을 것입니다.

또한 원본을 수정하는 대신 별도의 출력 문자열 또는 배열을 만듭니다. 이상적으로 StringBuilder를 사용하고 새 문자열 (또는이 문자를 대체하지 않으면 원래 문자)을 추가하십시오.

0

I 동시에 C#에서 다른 문자를 대체하는 방법을 알고하지 않습니다

StringBuilder builder = new StringBuilder(); 
foreach (char c in textBox1.Text) 
{ 
    string sound = getSoundForChar(c); 
    builder.Append(sound); 
} 
string omgwut = builder.ToString(); 

여기 시작합니다.

모든 문자를 반복하여 그 결과 문자열을 작성할 수 있습니다 (입력 문자열이 길면 stringbuilder를 사용하십시오). 각 문자의 경우 결과 문자열 (빌더)에 대체 문자를 추가합니다.

하지만 무엇을하려고합니까? 분리 자없이 파일 경로를 추가하는 유용한 응용 프로그램을 생각할 수 없습니다.

관련 문제