2013-03-20 1 views
0

는 내가 배열로 읽고있다 있도록처럼 탭으로 구분 된 파일을 가지고 :C에서 탭으로 구분 된 파일의 길이를 변경 하시겠습니까?

string[] yourChoicesItems = File.ReadAllLines("test.txt"); 
aaaaaaaaa(tab)0.09 
aaa(tab)1.25 

문제가있다 내가 텍스트 상자의 배열을 표시 할 때, 그것은 다음과 같이 뭔가를 찾고 끝 :

aaaaaaaaa 0.09 
aaa 0.09 

둘째 줄을 정렬하고 싶습니다. Word에서는 탭 스톱을 변경했지만 "Tab stops"+ C#에서는 완전히 다른 것을 얻었습니다.

+0

어떻게 읽습니까? – DevelopmentIsMyPassion

+0

[패딩 문자열] (http://msdn.microsoft.com/en-us/library/66f6d830 (v = vs.100) .aspx)을 사용하여 세미 라인업으로 만들 수 있지만 일반적으로 텍스트 상자는 당신이 원하는 것과 같은 정확한 레이아웃을 얻을 수있는 컨트롤이 아닙니다. 그리드가 더 좋을 것입니다. –

+0

당신이 사용하고있는 코드를 표시 할 수 있습니다. 당신이 할 수있는 데이터에 대한 .Trim() 배열을 할 수 있습니다. – MethodMan

답변

4

기본적으로 텍스트 상자는 실제로 알고있는 한 서식있는 텍스트를 처리하도록 설계되지 않았습니다. 물론 RichTextBox이 있습니다.하지만 기본적으로 원하는대로 탭을 처리 할 지 확신 할 수 없습니다.

일반 텍스트 상자를 사용하면 은글꼴을 고정 폭으로 설정하고 각 탭을 줄 간격을 따라 다른 수의 공백으로 바꿀 수 있습니다.하지만 그 정도는 많습니다. faff는 실제로 그 목적을 위해 설계되지 않은 컨트롤에서 기본적으로 표의 데이터를 표시합니다.

그리드보기의 선을 따라 무언가를 고려해야합니다. 탭으로 선을 분할하면 각 선이 데이터 행이됩니다. 그것은 당면한 과제에 대한 훨씬 더 적절한 통제입니다.

+2

@StenPetrov : 그것은 내가 말한 것, 그렇지 않은가? "나는 그것이 당신이 기본적으로 원하는 방식으로 탭을 처리 할 지 확신하지 못합니다."(리치 텍스트에서 할 수있는 교활한 방법이있을 수 있지만 목에 통증이있을 수 있습니다. 아직 정확한 해결책이 아닙니다.) –

+1

@ 존 : 사람들이 단지 살면서 구멍을 찾으려고합니다. 당신의 대답 중 하나 LOL 사람들이 옳았을 때 사람들은 싫어 해요. 환상적인 대답이었고, 오늘 더 많은 투표가 남았 으면 +1 할거예요. –

1
string[] records = inputString.Split('\n'); 
foreach(var record in records) 
{ 
    string[] fields = record.Split('\t'); 
    // do stuff with the fields, here, (independently of tabs) 
} 

편집 30 초 그것에 나를 이길 @JonSkeet, 그러나 그의 대답은 하나

0

this 대답에 봐 부족 c를 나는/B이 코드 샘플을 떠날거야. wpf 또는 wf를 사용하는지 여부는 지정하지 않았지만 유사해야합니다.

1

당신의 텍스트 상자에서 그들을 일렬로는 입력이 다음 및 String.format에 다시 가입 분할 :

string[] parts= record.Split('\t'); 
string yourOutput = string.Format("{0,-15}{1}", parts[0], parts[1]); 

물론 일부 입력 검사가 좋은 것입니다 ... 그리고 당신은 아마 아직도 요구하는지 당신이 보여주는 각 부분에 대해 별도의 컨트롤을 가지고 수정해야합니다.

+0

그래서 지금, 나는 결국 내가 어디에서 끝내 느니라. 그 사이의 탭 대신에 시작되는 15 개의 공백이 있습니다. – rayden54

+0

@ user2146821이 형식은 첫 번째 값을 최소한 15 문자로 채 웁니다. 고정 폭 글꼴을 사용하면 그것들을 여러 줄로 긋다 –

관련 문제