2016-09-09 17 views
-1

문자를 사용하여 텍스트를 분할하여 객체를 생성 할 수 있도록합니다.텍스트를 배열로 나눕니다.

string s = "Domain_FieldName"; 
//string s = "Domain_Schema_TableName_FieldName"; 
//string s = "Domain_Schema_FieldName"; 

var x = s.Split(new[] {'_'}, StringSplitOptions.None); 

var xx = new Response() 
{ 
    Value = "test", 
    DataType = "string", 
    Domain = 
    Schema = 
    TableName = 
    FieldName = 
}; 

따라서 문제는 분할 할 문자열의 길이가 다를 수 있다는 것입니다.

그러나 응답 개체 필드에 매핑 할 수 있도록 문자열을 분할해야합니다.

응답 개체를 채우는 일반적인 방법이 필요합니다. 전용 "Domain_FieldName"가 지정된 경우

그래서 예를 들어, 그것은 응답에 필드 이름에 대한 응답 및 필드 이름에 도메인에 도메인을 통과 알고 있어야하고, 스키마 및 TABLENAME은 빈 문자열

+1

그것은이다 당신이 무엇을 요구하고 있는지 또는 무엇을 당신이 대답으로 기대하고 있는지 명확하지 않습니다. 특정 문제가있는 경우 [최소, 완전하며 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 포함 시키십시오. [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask)을 읽어보십시오. 질문이 구체적이고 지나치게 넓지는 않은지 확인하십시오. – Igor

+0

귀하의 질문은 * 정확하게 * 무엇입니까? 여러분이's'을 나누어'x'에 할당하는 것이 분명합니다 -하지만'x'로 어디에서 무엇을하고 있습니까? 'x'의 어떤 부분을'xx'에 넣고 싶습니까? 네가하려는 일을 볼 수 없어, 미안. –

+0

미리 정의 된 일련의 데이터가 없으면 무엇을 얻을 수 없습니다. 다음과 같이 뭔가가 필요할 수 있습니다. Domain _ _ _FieldName. 이렇게하면 네 번째 요소가 항상 Fieldname이고, 첫 번째 요소는 항상 도메인이고 나머지는 계속됩니다. – vassilag

답변

0

당신이 뭔가를 할 수 있습니다

 var x = s.Split(new[] { '_' }, StringSplitOptions.None); 

     var xx = new Response 
     { 
      Value = "test", 
      DataType = "string", 
      Domain = x.Length > 0 ? x[0] : null, 
      Schema = x.Length > 1 ? x[1] : null, 
      TableName = x.Length > 2 ? x[2] : null, 
      FieldName = x.Length > 3 ? x[3] : null 
     }; 
0

을 얻어야한다 위의 코드는 구분 기호 _를 사용하여 다른 부분에 문자열 Domain_Schema_TableName_FieldName을 분할하고 문자열라는 문자열 배열에 문자열을 저장합니다

string s = "Domain_Schema_TableName_FieldName"; 
string[] substring= s.Split('_'); 

를 사용하여 C#을 Split 기능

0

변수를 설정하기 전에 split 어레이의 길이를 확인하십시오. (너무 짧으면 기본값을 설정하십시오.)

var xx = new Response() 
{ 
    Value = "test"; 
    DataType = "string"; 
    Domain = (x.Length >= 1)?x[0]:""; 
    Schema = (x.Length >= 2)?x[1]:""; 
    TableName = (x.Length >= 3)?x[2]:""; 
    FieldName = (x.Length >= 4)?x[3]:""; 

}};

:

EDIT를 (또한 s.Split("_") 또는 s.Split('_')은 잘 작동) : 나는 보지 못했다 , 만 가득 마지막 4 개 필드를 원했다는 것을. 변경된 코드

두 번째 편집 : 또한 문자열 순서가 다를 수도 있습니다 (예 1과 예 3). 이 경우 어떤 문자열을 어떤 필드에 넣어야하는지 결정할 수있는 방법을 지정하지 않으면 내가 도울 수 없습니다.

0

이 예에서

 string s = "Domain_FieldName"; 
     var x = s.Split(new[] { '_' }, StringSplitOptions.None); 
     var xx = new Response 
     { 
      Value = "test", 
      DataType = "string", 
      Domain =x[0], 
      Schema ="", 
      TableName ="", 
      FieldName = x[1] 
     }; 
0

이 도메인 것 같아이 먼저 항상 시도하고 필드 이름은 항상 마지막 :

string s = "Domain_FieldName"; 
//string s = "Domain_Schema_TableName_FieldName"; 
//string s = "Domain_Schema_FieldName"; 

var x = s.Split('_'); 

var xx = new Response() 
{ 
    Value = "test", 
    DataType = "string", 
    Domain = x[0] 
    Schema = x.Length > 2 ? x[1] : ""; 
    TableName = x.Length > 3 ? x[2] : ""; 
    FieldName = x.Length > 1 ? x.Last() : ""; 
}; 
관련 문제