빈 줄없이 긴 줄을 어떻게 감쌀 수 있습니까?


193

긴 문자열 (DNA 서열)이 있습니다. 공백 문자를 포함하지 않습니다.

예를 들면 다음과 같습니다.

ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA

이 텍스트를 a html:textarea또는 로 감싸 야하는 CSS 선택기는 무엇입니까 xul:textbox?


17
아이러니하게도 문자열은 스택 오버플로에서도 깨지지 않습니다 ...
splattne

답변:


273

블록 요소의 경우 :

<textarea style="width:100px; word-wrap:break-word;">
  ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</textarea>

인라인 요소의 경우 :

<span style="width:100px; word-wrap:break-word; display:inline-block;"> 
   ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</span>


IE, Safari 및 FF3.1 (알파)에서만 지원됩니다.
Adam Bellaire

1
이 브라우저의 새로운 물결에서만 작동합니다 - 볼 caniuse.com/#search=word-break
마이클 베른

9
@Michael : 대답은 "단어 나누기"규칙이 아니라 "단어 줄 바꿈"규칙을 사용합니다. 전자는 오늘날 사용되는 거의 모든 브라우저 에서 사용되는 것처럼 지원됩니다 . "부분 지원"이 표시된 경우 "단어 줄 바꿈"규칙의 "단어"값이 여전히 유효합니다.
Robusto

2
이 속성은 overflow-wrap표준 이후로 이름이 바뀌 었지만 wrod-wrap널리 구현되었습니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
또한 "display : table-cell"과 함께 작동하며 제 경우에는 필요했습니다
César León

107

장소 제로 폭 공간을 당신이 휴식을 허용 할 점. 너비가 0 인 공간은 &#8203;HTML입니다. 예를 들면 다음과 같습니다.

ACTGATCG&#8203;AGCTGAAG&#8203;CGCAGTGC&#8203;GATGCTTC&#8203;GATGATGC


4
좋은 제안, 오늘 새로운 것을 배웠습니다. 감사합니다!
Matteo Conta

2
이 솔루션에 감사드립니다. 테이블 내부에서 이와 같은 작업을 수행하는 데 어려움을 겪고 있었고이 솔루션은 IE, Firefox 및 Chrome에서 작동하는 유일한 솔루션입니다.
Farinha

1
+1, 더 구체적인 경우에 대한 질문이 있었지만 더 많은 경우를 다루므로 더 잘 작동합니다.
몬트리올리스트

2
<wbr>선택적으로 줄 바꿈 기회를 제공하는 것과 동일한 목적을 수행 하는 태그를 사용할 수도 있습니다 .
justisb

7
복사하여 붙여 넣을 수있는 작업에서이 작업을 수행하는지 확인하십시오.
alex

42

다음은 매우 유용한 답변입니다.

긴 단어가 내 div를 깨는 것을 방지하는 방법은 무엇입니까?

시간을 절약하기 위해 CSS로 해결할 수 있습니다.

white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP printers */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
word-wrap: break-word; /* IE */
word-break: break-all;

4
단어 구분을 언급하기 때문에 +1합니다. : break-all; 이는 IE9에서 나를 위해 일한
닉 베네딕토에게

3
word-break: break-all;나를 위해 Android WebView에서 일한 유일한 사람이었습니다.
Stan

감사합니다 word-break: break-all;!
Lonnie Best

18

저에게는 이것이 효과가 있습니다.

<td width="170px" style="word-wrap:break-word;">
  <div style="width:140px;overflow:auto">
    LONGTEXTGOESHERELONGDIVGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESHERELONGDIVLONGTEXTLONGTEXT
  </div>
</td>

대신 다른 div 안에 div를 사용할 수도 있습니다 td. 내가 사용하는 overflow:auto내 오페라와 IE 브라우저에서 모두 모든 텍스트와 같이.


이것은 나를 위해 작동하지 않았습니다. "word-wrap"속성을 div로 이동하고 "overflow"속성을 제거해야합니다. 이 변경으로 작동합니다.
danigonlinea

12

CSS 로이 작업을 수행 할 수 있다고 생각하지 않습니다. 대신 문자열을 따라 일정한 '단어 길이'에서 HTML 소프트 하이픈을 삽입하십시오.

ACTGATCG&shy;AGCTGAAG&shy;CGCAGTGC&shy;GATGCTTC&shy;GATGATGC&shy;TGACGATG

줄 끝에 하이픈이 표시되어 줄 바꿈이되어 원하는대로 표시 할 수 있습니다.

참고 Safari <textarea>는 Firefox와 달리 어쨌든 긴 문자열을 감싸는 것 같습니다 .


와우, 그건 몰랐어 산뜻한!
Daniel Schaffer

나도 그것에 대해 몰랐다. 깔끔한 더블!
Karl

11

공백이없는 문자열을 강제로 줄이려면 CSS 메서드를 사용하십시오. 세 가지 방법 :

1) CSS 공백 속성을 사용하십시오. 브라우저 불일치를 다루려면 몇 가지 방법으로 선언해야합니다. 따라서 looooong 문자열을 일부 블록 레벨 요소 (예 : div, pre, p)에 넣고 해당 요소에 다음 CSS를 제공하십시오.

some_block_level_tag {
    white-space: pre;           /* CSS 2.0 */
    white-space: pre-wrap;      /* CSS 2.1 */
    white-space: pre-line;      /* CSS 3.0 */
    white-space: -pre-wrap;     /* Opera 4-6 */
    white-space: -o-pre-wrap;   /* Opera 7 */
    white-space: -moz-pre-wrap; /* Mozilla */
    white-space: -hp-pre-wrap;  /* HP Printers */
    word-wrap: break-word;      /* IE 5+ */
}

2) Compass강제 랩 믹스 인을 사용하십시오 .

3) 나는 이것도 조사하고 있었고 또한 효과가 있다고 생각합니다 (그러나 브라우저 지원을보다 완벽하게 테스트해야합니다).

.break-me {
    word-wrap: break-word;
    overflow-wrap: break-word;
}

참조 : 내용 감싸기


그렇습니다. # 3는 모든 최신 브라우저와 심지어 더 오래된 IE6 +에서도 작동합니다.
Graeck

1
# 3은 단어별로 구분할 기회가있는 경우에만 작동합니다. 너무 긴 문자열이 끊어지지 않습니다 (Chrome 52.0.2743.82에서 테스트 됨).
collapsar

8

CSS를 통해 갈 수있는 방법 (특수 문자를 삽입하는 적절한 방법이 없을 때) :

-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;

여기에서 찾을 수 있습니다 : http://kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ 추가 연구가 있습니다.


5

word-wrap:break-word;나를 위해 일하기 위해 를 display로 설정 block하고 너비가 요소에 설정되어 있는지 확인해야했습니다 . Safari에서는 p태그 가 있어야하고에 width설정해야했습니다 ex.


3

PHP를 사용하는 경우 wordwrap 기능이 다음과 같이 잘 작동합니다. http://php.net/manual/en/function.wordwrap.php

CSS 솔루션 word-wrap: break-word;이 모든 브라우저에서 일관된 것처럼 보이지는 않습니다.

다른 서버 측 언어는 비슷한 기능을 가지고 있거나 직접 만들 수 있습니다.

PHP 워드 랩 기능은 다음과 같습니다.

$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";

$wrappedstring = wordwrap($string,50,"&lt;br&gt;",true);

이렇게하면 <br> 태그로 문자열을 50 자로 묶습니다. 'true'매개 변수는 문자열을 강제로 자릅니다.


이 솔루션을 Remy 솔루션과 혼합하여 너비가 0 인 공백을 삽입 할 수 있습니다. wordwrap ($ longtext, 5, "& # 8203;", true);
MV.

3
<textarea style="width:100px; word-wrap:break-word;">
  place your text here
</textarea>

3

<wbr>태그 사용 :

ACTGATCG<wbr>AGCTGAAG<wbr>CGCAGTGC<wbr>GATGCTTC<wbr>GATGATGC

&#8203;텍스트를 복사 할 때 문제를 일으킬 수있는 너비가 0 인 공간 을 사용하는 것보다 이것이 좋습니다 .


2

테이블이 고정 크기가 아닌 경우 아래 줄이 나를 위해 일했습니다.

style="width:110px; word-break: break-all;"

1

그냥 설정 width하고 추가하면 float나를 위해 일했습니다 :-)

width:100%;
float:left;

완전하고 쉬운 대답입니다.이 문제를 처음 게시 한 사람은 width : 100 %; float : left와 함께; 해당 문자열을 포함하는 요소와 그의 문제가 해결됩니다. 그렇다면이 답변이 왜 관련이 없습니까?
TechBrush.Org

이 문제를 게시 한 사람은 5 년 전에 솔루션이 효과가 있다고 생각하지 않기 때문입니다.
Pierre

2
예, 그러나이 포럼은이 포럼에 대한 것이 아니라이 포럼에 대한 정보 일 뿐이며 오늘날 나와 비슷한 문제에 직면 한 다른 사람들도 같은 혜택을 누릴 수 있습니다.
TechBrush.Org
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.