2013-03-31 3 views
0

나는이 String를 포맷해야제거 탭

"if (true) { 
    System.out.print("Yes"); 
    if (false) { 
     System.out.prinln("DSadaDSa"); 
     x = 4; 
     blahblah(); 
    } 
}" 

현재 빈 문자열로 원하지 않는 문자 시퀀스를 대체하여 다소 지저분한 방식으로 처리하고 있지만 String 끝에 남았습니다.

"if (true) { 
     System.out.print("Yes"); 
     if (false) { 
      System.out.prinln("DSadaDSa"); 
      x = 4; 
      blahblah(); 
     } 
    }" 

각 줄에 여전히 주요한 탭이 있습니다.

String이 탭 한 개만큼 왼쪽으로 효과적으로 이동하도록이 탭을 쉽게 제거 할 수 있습니까?

+0

왜 'if (true)'섹션을 작성 했습니까? 당신은 그것을 그냥 남겨 둘 수도 있습니다 ... – Kezz101

+1

그것은 단지 이해가되지 않는 예제 방법입니다. 질문을주의 깊게 읽으면 그 코드는 중요하지 않습니다. –

+0

이해할 수없는 부분은 무엇입니까? 나는 내가 가진 문자열을 말했고, 나는 어떤 하위 문자열 사이에 모든 것을 가져와야한다. 나는 내가 원하는 출력의 예와 내가 얻고있는 결과의 예제를 주었다 ... – SteWoo

답변

1

이 시도 : 당신은 String 클래스의 trim() 방법을 잘 알고

String s=what you already have; 

//split the string into lines 
String[] lines=s.split("\n"); 

//cut off the beginning of each one 
for(int i=0;i<lines.length;i++) 
    lines[i]=lines[i].substring(/*1, 2, 4, or 8 depending on tab formatting*/); 
return s; 
+0

피드백 Jakob을 주셔서 감사합니다, 매력처럼 일했습니다! – SteWoo

2

있습니까?

내가이 잘 작동합니다 생각

이 ... 선두와 마지막 공백은 생략, 문자열의 복사본을 반환 ... : 워드 프로세서

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim()

너의 상황을 위해. Jakob이 작성한 것을 토대로 빌드 할 수 있지만 lines[i]=lines[i].substring(/*...*/);을 수행하는 대신 lines[i] = lines[i].trim();

+0

제안을 주셔서 감사합니다 croyd하지만 trim()은 모든 선행 공백을 제거합니다. 단지 문자열을 왼쪽으로 조금 이동하는 데 필요한 탭 1 개를 제거하고 싶습니다. – SteWoo