2012-08-16 3 views
0

나는 예를 들어, 단어와 그 대체 단어 하나 개의 목록이 있습니다C#을 대체 문자열

데스크 -> 등 테이블

그래서 사용자 책상를 작성하는 경우 말할 수

는 결과를 줄 것이다 그러나 사용자가 대문자 으로 작성하면 변경되지 않습니다. 나는 대문자를 무시하는 방법을 알고 있지만 세계는 이 소문자 인 테이블로 바뀔 것입니다 ... t을 대문자로하고 싶습니다. 그래서 책상 -> 테이블과 책상 -> 테이블 ... 어떻게 할 수 있습니까?

+2

RegEx를 살펴 보셨습니까? – JohnnBlade

+0

아니요, RegEx가 내 문제를 해결할 것입니다. 그렇습니까? – Alkis

+0

대/소문자를 무시하는 대신 replace 함수에 대한 두 번째 호출을 수행하고 Desk with Table을 교체 할 수 있습니다. 원래 단어가 DEsk이면 TAble로 대체해야합니까? 또는 첫 번째 문자에만 적용됩니까? – Tibi

답변

1

두 번째로 대문자로 바꾸기 기능을 다시 호출 할 수 있습니다. 예를 들어

:

string result = input.Replace ("desk", "table"); 
result = result.Replace ("Desk", "Table"); 

가 대문자로 문자열의 첫 번째 문자를 얻으려면 매우 어려운 일이 아니다. 귀하의 경우 이제

str = str.First().ToString().ToUpper() + String.Join("", str.Skip(1)); 

는, 저장하기 위해 사전 데이터 구조를 사용

string lower = "desk"; 
string upper = char.ToUpper(lower[0]) + lower.Substring(1); 
0

당신은 대문자로 입력 문자열의 첫 글자를 확인하기 위해 아래의 코드를 사용할 수 있습니다 :이 방법을 사용할 수 있습니다 데이터.

  1. 스토어 등 (키)와 같은 입력 값 책상 -> 표 (값)

  2. 이제 위의 코드를 사용할 대문자 첫 글자를 확인하고 (책상 -> 표)를 저장

이제 책상 -> 테이블과 데스크 -> 테이블 인 것처럼 값을 가져올 수 있습니다.

이것은 공간 복잡성을 손상시킴으로써 시간 복잡성 O (1)의 값을 항상 가져옵니다.

1

단어와 대체 단어가있는 목록이 있다고 말합니다. 이 맞으면 그래서 데이터 구조는, 그 다음은

var result = dict["Desk"]; 

하지만 당신은 아래의 방법으로 값을 유지하는 경우,

Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("desk","table"); 

다음 작동합니다

Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("desk","table"); 
dict.Add("Desk","Table"); 

될 것입니다 해결책은

private void button1_Click(object sender, EventArgs e) 
    { 
     Dictionary<string, string> dict = new Dictionary<string, string>(); 
     dict.Add("desk","table"); 


     string input = "Desk"; 
     var dictValue = dict[input.ToLower()]; 
     var result = IsInitCap(input.Substring(0, 1)) 
        ? System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(dictValue) 
        : dictValue;     

    } 

    private bool IsInitCap(string str) 
    { 
     Match match = Regex.Match(str, @"^[A-Z]"); 
     return match.Success ? true : false; 
    } 

호프가 도와 드리겠습니다.