2011-11-10 4 views
0

드라이브 문자 배열이 있고 각 문자에 콜론을 추가 한 다음 배열을 다른 함수에 전달해야합니다. 이 작업을 수행 할 수 있습니까, 아니면 새 배열을 만들어야합니까? 또는 어쩌면 모든 종류의 목록이 아닌 배열 일 수도 있습니다.배열 요소 편집

string source = "C|D|E"; 
string[] sourcearray = source.Split('|'); 
foreach (string driveletter in sourcearray) 
{ 
    //need to append ":" to each drive letter 
} 

편집 :

string source = "C|D|E|"; 

을 그게 내가 루프에 대한 일반적인를 사용하는 경우 콜론 될 배열의 마지막 요소를 발생하면 : 소스 배열 파이프로 끝날 수있는 경우가 있습니다 나는 이것을 가질 수 없다. 어떻게 처리해야합니까? 이 경우 최종 배열은 다음과 같이 표시되어야합니다.

C: D: E: 

감사합니다. 이것은 string.Split() 방법의 특별한 변화가에

string source = "C|D|E|"; 

여기에 가장 좋은 방법은 다음과 같습니다

+0

: 당신은 빈 값을 무시하도록 분할 기능을 알 수 있습니다. 기능 과부하를 점검하십시오. – GeirGrusom

답변

3

문자열은 불변, 그래서 당신은 문자열 인스턴스를 변경할 수 있지만 새로운 문자열 배열 슬롯을 변경해야합니다

string source = "C|D|E"; 
string[] sourcearray = source.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries); 
for(int i=0; i < sourcearray.Length; i++) 
{ 
    sourcearray[i] = sourcearray[i] + ":"; 
} 
편집으로
+0

감사합니다. 특정 사례에 대한 질문을 수정했습니다. –

+0

@SixHouse : Split의 오버로드를 사용하여 빈 항목을 건너 뛰고 편집을 확인할 수 있습니다. – digEmAll

2

는 당신을 위해 루프 편집 다시

string[] resultArray = sourcearray.Select(s => s + ":").ToArray(); 

으로 대체합니다. 불행하게도 하나는 분리 문자의 배열을 요구한다, 그래서 우리가 얻을 :

sourceArray = source.Split(new char[] {'|'}, 
      StringSplitOptions.RemoveEmptyEntries); 
+1

이 녀석은 분명히 C#에 익숙하지 않은데, 람다식이 적절한 해결책이라고 확신하지 못합니다. –

+2

@KristianFenn : 그래서 람다 식에 관해 뭔가 들려 줄 필요가 있습니다. –

1
for (var i = 0; i < sourcearray.Length; i++) 
{ 
    sourceArray[i] += ":"; 
} 
0
string[] sourcearray = source.Split('|').Select(s => s + ":").ToArray(); 
0
var newArray = source.Split('|').Select(s => s + ":").ToArray();