2011-02-24 4 views
1

이 결합 된 단어를 두 개로 분할 할 수 있습니까? 예 : "FIRSTNAME" "첫 번째" "이름"C# 문장 분할

에 나는 특성의 무리가 성 등 FIRSTNAME을, 예 나는 내 페이지에 표시해야합니다. 그래서 더 적절한 방법으로 표시하려면이 속성 이름을 분리해야합니다.

+1

알고리즘은 설명 할 필요가 있습니다. 논리가 뭐야? 어떻게하면 다음과 같은 입력'Ddjkfhsdks'를 분리 할 수 ​​있습니까?분명한 문제 설명이 없으면 명확한 기능을 쓸 수 없습니다. –

+2

* 해당 단어 * 만? 그렇다면's.Substring (0, 5)'와's.Substring (5, 4)'가 할 것이다. 아니면 그냥 :'string s1 = "First"; string s2 = "Name";'당신이하고 싶은 일에 대해 좀 더 구체적으로 설명해야합니다. –

+0

단어의 일부분에 고정 길이가 있습니까? – Tamschi

답변

0

당신은 내가 생각할 수있는 유일한 해결책은 상단 문자에 분할하는 모든 '하나'단어의 사전이 없다면 :

FIRSTNAME -> 이름

여전히 UIFilter 존재합니다 문제 - > UI 필터.

0

substring을 사용하면 문자열의 처음 5 문자를 가져올 수 있습니다. 그런 다음 replace 원래 문자열의 처음 5자가 비워집니다.

string str = "Firstname"; 
string firstPart = str.Substring(0,5); // "First" 
string secondPart = str.replace(firstPart,""); // "name" 

당신이 일반적인 단어를 분할 할 수 있도록하려면

는, 당신은 당신이 부분으로 단어를 나눌 수있는 몇 가지 명확한 기준이 필요합니다. 명확한 기준이 없으면 예상대로 문자열을 분할 할 수 없습니다.

1

편집 : 영업 이익은 그 속성 이름

당신이 (즉, 대신 "FIRSTNAME"의 "FIRSTNAME") 속성에 대한 명명 규칙을 낙타 표기법을 따르는 경우에 분할 할 필요가 있음을 지정, 당신은 대문자로 단어를 분할 할 수 있습니다 꽤 쉽게.

string[] SplitByCaps(string input) 
{ 
    StringBuilder output = new StringBuilder(); 
    for (int i = 0; i < input.Length; i++) 
    { 
     char c = input[i]; 
     if (i > 0 && Char.IsUpper(c)) 
      output.Append(' '); 

     output.Append(c); 
    } 
    return output.ToString().Split(' ');   
} 

Orinal 답 :

나는 그것을 임의의 문자열이 작업을 수행 할 수 없습니다, 실제 목적을 위해 말할 것입니다.

물론이 작업을 수행하는 프로그램을 작성하는 것이 가능하지만 실제 요구 사항이 무엇이든 그 프로그램은 과도하게 사용됩니다. 이미이 작업을 수행하는 라이브러리가있을 수도 있지만 너무 무거워서 개발자에게 의존하지 않으려 고합니다.

영어를 사용하는 모든 프로그램은 영어로 된 모든 단어를 알아야합니다 (다국어 솔루션도 고려하지 않겠습니다). 지능형 어휘 분석기가 필요합니다. 단어를 구분할 수있는 방법은 여러 가지가있을 수 있기 때문입니다.

특정 문제를 해결하기위한 다른 방법을 찾아 보시기 바랍니다.

1

당신의 목표는 퍼지다.
속성에 항상 대문자가 있으면 단어의 모든 대문자 위치를 찾아 해당 위치로 나눌 수 있습니다.
대문자가 보장되지 않으면 가장 좋은 방법은 변환 테이블을 만드는 것입니다. 이 테이블은 초기 속성 이름과 결과 텍스트의 쌍을 정의합니다. 이 방법으로 당신은 transormation을위한 간단한지도를 갖게 될 것입니다.