나는 예를 들어, 단어와 그 대체 단어 하나 개의 목록이 있습니다C#을 대체 문자열
데스크 -> 등 테이블
그래서 사용자 책상를 작성하는 경우 말할 수는 결과를 줄 것이다 표 그러나 사용자가 대문자 으로 작성하면 변경되지 않습니다. 나는 대문자를 무시하는 방법을 알고 있지만 세계는 이 소문자 인 테이블로 바뀔 것입니다 ... t을 대문자로하고 싶습니다. 그래서 책상 -> 테이블과 책상 -> 테이블 ... 어떻게 할 수 있습니까?
나는 예를 들어, 단어와 그 대체 단어 하나 개의 목록이 있습니다C#을 대체 문자열
데스크 -> 등 테이블
그래서 사용자 책상를 작성하는 경우 말할 수는 결과를 줄 것이다 표 그러나 사용자가 대문자 으로 작성하면 변경되지 않습니다. 나는 대문자를 무시하는 방법을 알고 있지만 세계는 이 소문자 인 테이블로 바뀔 것입니다 ... t을 대문자로하고 싶습니다. 그래서 책상 -> 테이블과 책상 -> 테이블 ... 어떻게 할 수 있습니까?
두 번째로 대문자로 바꾸기 기능을 다시 호출 할 수 있습니다. 예를 들어
:
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);
당신은 대문자로 입력 문자열의 첫 글자를 확인하기 위해 아래의 코드를 사용할 수 있습니다 :이 방법을 사용할 수 있습니다 데이터.
이제 위의 코드를 사용할 대문자 첫 글자를 확인하고 (책상 -> 표)를 저장
이제 책상 -> 테이블과 데스크 -> 테이블 인 것처럼 값을 가져올 수 있습니다.
이것은 공간 복잡성을 손상시킴으로써 시간 복잡성 O (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;
}
호프가 도와 드리겠습니다.
RegEx를 살펴 보셨습니까? – JohnnBlade
아니요, RegEx가 내 문제를 해결할 것입니다. 그렇습니까? – Alkis
대/소문자를 무시하는 대신 replace 함수에 대한 두 번째 호출을 수행하고 Desk with Table을 교체 할 수 있습니다. 원래 단어가 DEsk이면 TAble로 대체해야합니까? 또는 첫 번째 문자에만 적용됩니까? – Tibi