탭의 개념

1883 단어
오늘 간단한 코드를 한 토막 썼는데, 단지 두 개의 문장만 있는데, 출력의 결과는 오히려 나를 매우 현혹시켰다.다음은 코드입니다.
String s = "This\tis\tmy\tsmall\texample\tstring\twhich\tI'm\tgoing\tto\tuse\tfor\tpattern\tmatching.";
System.out.println(s);

콘솔에서 인쇄된 텍스트:
This    is  my  small   example string  which   I'm going   to  use for pattern matching.

탭이 표시하는 길이가 왜 고정적이지 않고 단어 사이의 빈칸이 길고 짧은지 의심스럽다.위키백과에서 탭을 찾았지만 여전히 모르겠다.나중에 Stackoverflow에서 질문을 했는데 드디어 알았어요.주로 세 가지 개념이 관련된다.
  • 단어의 길이: 예를 들어'word'라는 단어의 길이는 4,'a'라는 단어의 길이는 1,'are'라는 단어의 길이는 3,'너'라는 단어의 길이는 1,'안녕하세요'라는 단어의 길이는 2이다.
  • 탭의 너비(size): 탭의 너비는 설정 가능한 속성(예를 들어 notepad++ 다음 탭의 기본 너비는 4)입니다. 설정이 끝난 후에 다시 설정하지 않으면 고정됩니다.
  • 탭이 대표하는 공백 문자의 개수: 탭이 대표하는 공백 문자의 개수는 고정된 것이 아니라 탭의 너비와 이 탭의 앞쪽 단어의 길이와 일정한 산술 관계를 만족시킨다.

  • 단어의 길이는wordLength로 표시하고, 탭의 폭은tabSize로 표시하며, 탭이 대표하는 공백 문자의 개수는tabappearSpaceLength로 표시하며, 이 세 가지는 두 가지 조건을 만족시킨다.
  • tabAppearSpaceLength >=1 && tabAppearSpaceLength <= tabSize
  • (wordLength + tabAppearSpaceLength) % tabSize == 0

  • 만약 탭의 폭이 4라면 단어this 다음에 탭을 두드리면 탭은 4개의 공백 문자의 위치를 차지하고 단어 a 다음에 탭을 두드리면 탭은 3개의 공백 문자의 위치를 차지한다.

    좋은 웹페이지 즐겨찾기