긴 문자열의 10 자만 표시 하시겠습니까?


84

JQuery를 사용하여 최대 10 개의 문자를 표시하는 긴 텍스트 문자열 (예 : 쿼리 문자열)을 얻으려면 어떻게해야합니까?

죄송합니다. 저는 JavaScript & JQuery의 초보자입니다.
어떤 도움을 주시면 대단히 감사하겠습니다.


예를 들어 명확히 할 수 있습니까?
Andy E

DOM 요소의 문자열이기 때문에 jquery입니까?
sje397

1
@Gopi yes 나는 ellipsize를 의미합니다. 명확히하기 위해 ... 사용자가 사례를 제기 할 수있는 인트라넷 시스템에서 작업 중입니다 ... 일부 사용자는 홈페이지에 표시 될 때 테이블 레이아웃을 깨는 매우 긴 쿼리 문자열을 추가합니다. 이 쿼리 문자열을 확인 (JQuery 사용)하여 공백없이 공백없이 10 자 더한 내용을 확인하고 생략하고 싶습니다 (예 : this = is-a-really-long & string ...) 이것이 의미가 있는지 알려주십시오. 감사합니다
Nasir

1
그것은에서 근무 여기 좋은 성공!
트란 안 히엔

브라우저가 자동으로 (내 대답은 아래 참조) 요소의 경계를 끊을 문자열에 줄임표를 추가 할 수 있습니다
알니 타크

답변:


166

내가 올바르게 이해한다면 문자열을 10 자로 제한하고 싶습니까?

var str = 'Some very long string';
if(str.length > 10) str = str.substring(0,10);

그런 거요?


15
여기서 if 문은 선택 사항입니다. 10 자 미만의 문자열에서 str.substring (0,10) 은 영향을받지 않습니다. :)
Andy E

10
그러나 if 문은 다음과 같이 사용할 수 있습니다. {var str = 'Some very long string'; if (str.length> 10) str = str.substring (0,10) + "..."; }
Daniel Wedlund 2010-08-05

@Daniel : 사실, 줄임표를 추가하는 데 필요합니다. 다행히도 저는 optional 이라는 단어를 사용했습니다 :-)
Andy E

4
@Daniel, "if (str.length> 10) str = str.substring (0,10) +"... ";}"는 결과 문자열의 길이가 10이 아니라 13이기 때문에 잘못되었습니다 !! 올바른 : "if (str.length> 10) str = str.substring (0,10-3) +"... ";}"
Floyd

1
관심있는 사람들을위한 성능 테스트 가 있습니다. 부분 문자열이 실제로 필요한 경우가 50 %의 시간 동안 발생하면 거의 동일하게 수행됩니다.
Juan Mendes 2015

22

다음은 jQuery 예제입니다.

HTML 텍스트 필드 :

<input type="text" id="myTextfield" />

크기를 제한하는 jQuery 코드 :

var elem = $("#myTextfield");
if(elem) elem.val(elem.val().substr(0,10));

예를 들어, 위의 jQuery 코드를 사용하여 사용자가 입력하는 동안 10 자 이상을 입력하지 못하도록 제한 할 수 있습니다. 다음 코드 스 니펫은 정확히이 작업을 수행합니다.

$(document).ready(function() {
    var elem = $("#myTextfield");
    if (elem) {
        elem.keydown(function() {
            if (elem.val().length > 10)
                elem.val(elem.val().substr(0, 10));
        });
    }            
});

업데이트 : 위의 코드 스 니펫은 예제 사용을 보여주기 위해서만 사용되었습니다.

다음 코드 스 니펫은 DIV 요소와 관련된 문제를 처리합니다.

$(document).ready(function() {
    var elem = $(".tasks-overflow");
    if(elem){
        if (elem.text().length > 10)
                elem.text(elem.text().substr(0,10))
    }
});

유의하시기 바랍니다 내가 사용하고 있음을 text대신 val때문에,이 경우 val방법은 DIV 요소와 작동하지 않습니다.


Hi Giu, 입력 중일 때 텍스트를 처리하지 않고 표시하고 테이블 레이아웃을 깨뜨릴 때. 쿼리 문자열 텍스트는 .tasks-overflow라는 DIV에 표시됩니다.
Nasir

@Nasir 힌트 주셔서 감사합니다. 내 답변을 업데이트했습니다. 그것은 당신이 당신의 작은 문제를 해결하는 데 도움이해야
주세페 Accaputo

안녕하세요 Giu, 귀하의 코드를 시도했지만 작동하지 않았습니다. 나는이 긴 문자열 'thisisonelooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongquerystring가'표시하려는 등 'thisisonelooo ...'
나시

코드는 다음과 같습니다. $ (document) .ready (function () {$ ( ".tasks-overflow : contains ( 'http : //')") .each (function () {var self = $ (this ), txt = self.text (); txt = txt.replace (/ (http [s] * : [\ / \] {2}) [^ \ s] * / g, '$ 1 ...'); self.text (txt);}); // Giu 코드 var elem = $ ( ". tasks-overflow"); if (elem) {if (elem.val (). length> 10) elem.val (elem. val (). substr (0,10))}});
Nasir

@Nasir 미안 해요; 내 이전 답변에는 valDIV 요소에서 작동하지 않는 방법이 포함되어 있습니다. 나는 내 대답을 다시 업데이트했으며 이제는 text완벽하게 작동하는 텍스트를 변경하는 데 방법이 사용됩니다 (다시 로컬에서 테스트했습니다). 업데이트 된 코드로 다시 테스트하고 알려주시겠습니까?
Giuseppe Accaputo 2010 년

19

아무도 분할이 발생하지 않았을 것이라고 생각하지 않았기 때문에 자신의 답변을 만듭니다 (짧은 텍스트). 이 경우 접미사로 '...'를 추가하고 싶지 않습니다.

삼항 연산자는 다음과 같이 분류합니다.

var text = "blahalhahkanhklanlkanhlanlanhak";
var count = 35;

var result = text.slice(0, count) + (text.length > count ? "..." : "");

작동하도록 닫을 수 있습니다.

function fn(text, count){
    return text.slice(0, count) + (text.length > count ? "..." : "");
}

console.log(fn("aognaglkanglnagln", 10));

도우미 클래스로 확장하여 점을 원하는지 여부를 선택할 수도 있습니다.

function fn(text, count, insertDots){
    return text.slice(0, count) + (((text.length > count) && insertDots) ? "..." : "");
}

console.log(fn("aognaglkanglnagln", 10, true));
console.log(fn("aognaglkanglnagln", 10, false));

18
var example = "I am too long string";
var result;

// Slice is JS function
result = example.slice(0, 10)+'...'; //if you need dots after the string you can add

결과 변수에 "I am too l ..."이 포함됩니다.



5

HTML

<p id='longText'>Some very very very very very very very very very very very long string</p>

javascript (문서 준비 중)

var longText = $('#longText');
longText.text(longText.text().substr(0, 10));

텍스트에 여러 단어가 있고 각 단어를 최대 10 자로 제한하려면 다음을 수행 할 수 있습니다.

var longText = $('#longText');
var text = longText.text();
var regex = /\w{11}\w*/, match;
while(match = regex.exec(text)) {
    text = text.replace(match[0], match[0].substr(0, 10));
}
longText.text(text);

2
.text () 는 텍스트 만 처리 할 때 .html () 보다 더 적합 합니다.
Andy E

안녕하세요 sje397,이 문자열 앞뒤의 다른 단어를 무시할 수 있어야합니다 (이 문자열은 긴 쿼리 문자열이며 공백이 없음) 감사합니다
Nasir

@Nasir-인수를 substr로 변경하거나 정규식을 살펴볼 수 있습니다.
sje397

4

문자열을 10 자로자를 때해야 할 일은 &hellip;세 개의 마침표가 아닌 실제 html ellipses entity :를 추가하는 것입니다.


3

이것은 아마도 당신이 원하는 것처럼 보입니다.

$(document).ready(function(){
var stringWithShorterURLs = getReplacementString($(".tasks-overflow").text());

function getReplacementString(str){
    return str.replace(/(https?\:\/\/[^\s]*)/gi,function(match){
        return match.substring(0,10) + "..."
    });
}});


첫 번째 줄에 html 요소를 지정한 다음 전체 텍스트를 가져 와서 url을 10 자 길이 버전으로 바꾸고 반환합니다. URL 문자가 3 개만있는 것이 조금 이상해 보일 수 있으므로 가능하면 이것을 권장합니다.

$(document).ready(function(){
var stringWithShorterURLs = getReplacementString($(".tasks-overflow p").text());

function getReplacementString(str){
    return str.replace(/https?\:\/\/([^\s]*)/gi,function(match){
        return match.substring(0,10) + "..."
    });
}});

http : // 또는 https : //를 추출하고 www.example.com의 최대 10 자까지 인쇄합니다.


2

이것이 문자열을 정확히 10 자로 제한하지는 않지만 브라우저가 CSS를 사용하여 작업을 수행하도록하는 것은 어떻습니까?

.no-overflow {
    white-space: no-wrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

그런 다음 문자열이 포함 된 테이블 셀에 대해 위의 클래스를 추가하고 허용되는 최대 너비를 설정합니다. 결과는 문자열 길이를 측정 한 결과보다 더 좋아 보일 것입니다.


1

@ jolly.exe

좋은 예 Jolly. 단어 수와는 반대로 문자 길이를 제한하는 버전을 업데이트했습니다. 또한 제목을 실제 원본 innerHTML로 설정하여 사용자가 마우스를 가져 가서 잘린 부분을 볼 수 있도록했습니다.

HTML

<div id="stuff">a reallly really really long titleasdfasdfasdfasdfasdfasdfasdfadsf</div> 

JS

 function cutString(id){    
     var text = document.getElementById(id).innerHTML;         
     var charsToCutTo = 30;
        if(text.length>charsToCutTo){
            var strShort = "";
            for(i = 0; i < charsToCutTo; i++){
                strShort += text[i];
            }
            document.getElementById(id).title = "text";
            document.getElementById(id).innerHTML = strShort + "...";
        }            
     };

cutString('stuff'); 

1

이 시도 :)

var mystring = "How do I get a long text string";
mystring = mystring.substring(0,10);
alert(mystring);

-2

이 표시 "긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트가 오래 오래 긴 텍스트를 텍스트 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 긴 텍스트 "

...에

긴 텍스트 긴 텍스트 긴 ...

        function cutString(text){    
            var wordsToCut = 5;
            var wordsArray = text.split(" ");
            if(wordsArray.length>wordsToCut){
                var strShort = "";
                for(i = 0; i < wordsToCut; i++){
                    strShort += wordsArray[i] + " ";
                }   
                return strShort+"...";
            }else{
                return text;
            }
         };

여기에서 단어를 고려하고 있습니다. 질문에 등장 인물이 언급 됨
Victor Fernandes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.