দীর্ঘ স্ট্রিংয়ের কেবলমাত্র 10 টি অক্ষর প্রদর্শন করবেন?


88

JQuery ব্যবহার করে সর্বাধিক 10 টি অক্ষর প্রদর্শন করতে আমি কীভাবে একটি দীর্ঘ পাঠ্য স্ট্রিং (ক্যোরিস্ট্রিংয়ের মতো) পেতে পারি?

দুঃখিত বন্ধুরা আমি জাভাস্ক্রিপ্ট এবং জ্যাকুয়েরিতে একজন শিক্ষানবিশ: এস যে
কোনও সাহায্যের প্রশংসা করা হবে।


আপনি একটি উদাহরণ দিয়ে স্পষ্ট করতে পারেন?
অ্যান্ডি ই

এটি কি ডাবল উপাদানটির একটি স্ট্রিং কারণ এটি jquery?
sje397

4
@ গোপী হ্যাঁ আমি বলতে চাইছি উপবৃত্তাকার রূপটি বোঝাতে ... আমি এমন একটি ইন্ট্রানেট সিস্টেমে কাজ করছি যেখানে ব্যবহারকারীরা মামলা তুলতে সক্ষম হন ... কিছু ব্যবহারকারী একটি দুর্দান্ত দীর্ঘ ক্যোরিস্ট্রিং যুক্ত করেন যা হোমপৃষ্ঠায় প্রদর্শিত হলে একটি টেবিল বিন্যাস ভেঙে দেয়। আমি এই কোয়েরিস্ট্রিংটি 10 ​​টি অক্ষরের প্লাস ছাড়াই 10 টি অক্ষরের জন্য যাচাই করে (জিকুয়ারি ব্যবহার করে) আটকে রাখতে চাই এবং উপবৃত্তাকারে (যেমন এটি = আসলেই দীর্ঘ-স্ট্রিং ...) দয়া করে আমাকে জানাতে দয়া করে this ধন্যবাদ
নাসির 13

4
এটি এখানে কাজ করেছে গুড সাসস!
ট্রান আন হিয়েন

ব্রাউজারগুলি স্বয়ংক্রিয়ভাবে স্ট্রিংগুলিতে উপবৃত্তগুলি যুক্ত করতে পারে যা কোনও উপাদানের সীমা ভেঙে দেয় (নীচে আমার উত্তরটি দেখুন)
অলਨੀটাক

উত্তর:


169

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি একটি স্ট্রিং 10 টি অক্ষরে সীমাবদ্ধ করতে চান?

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

এরকম কিছু?


15
যদি বিবৃতি এখানে ঐচ্ছিক। 10 টিরও কম অক্ষরের স্ট্রিংয়ের উপর str.substring (0,10) অকার্যকর থাকবে :)
অ্যান্ডি ই

10
তবে if স্টেটমেন্টটি এমন কিছুতে ব্যবহার করা যেতে পারে: str var str = 'কিছু খুব দীর্ঘ স্ট্রিং'; if (str.length> 10) str = str.substring (0,10) + "..."; }
ড্যানিয়েল ওয়েডলুন্ড

@ ড্যানিয়েল: সত্য, একটি উপবৃত্ত যোগ করার জন্য এটি প্রয়োজনীয় হবে। সৌভাগ্য যে আমি শব্দ ব্যবহৃত ঐচ্ছিক :-)
অ্যান্ডি ই

4
@ ড্যানিয়েল, "যদি (str.leight> 10) str = str.substring (0,10) +" ... "; wrong" ভুল কারণ রেজাল্ট স্ট্রিংয়ের দৈর্ঘ্য 13 নয় 10 এর !! সঠিক: "যদি (str.leight> 10) str = str.substring (0,10-3) +" ... "; Flo"
ফ্লয়েড

4
যারা যত্নশীল তাদের জন্য এখানে একটি পারফরম্যান্স পরীক্ষা । তারা প্রায় একই রকম সম্পাদন করে যদি সাবস্ট্রিংয়ের প্রয়োজন হয় এমন ক্ষেত্রে 50% সময় ঘটে।
জুয়ান মেন্ডেস

22

এবং এখানে একটি jQuery উদাহরণ:

এইচটিএমএল পাঠ্য ক্ষেত্র:

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

এর আকার সীমাবদ্ধ করতে jQuery কোড:

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

উদাহরণস্বরূপ, আপনি টাইপ করার সময় উপরে 10 টির বেশি অক্ষর প্রবেশ করতে বাধা দেওয়ার জন্য আপনি উপরের jQuery কোডটি ব্যবহার করতে পারেন; নিম্নলিখিত কোড স্নিপেট ঠিক এটি করে:

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

আপডেট : উপরের কোড স্নিপেট কেবল উদাহরণ ব্যবহারের জন্য দেখানো হয়েছিল।

নিম্নলিখিত কোড স্নিপেট আপনাকে ডিআইভি উপাদান দিয়ে ইস্যু পরিচালনা করবে:

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

দয়া করে মনে রাখবেন যে আমি এই ক্ষেত্রে textপরিবর্তে ব্যবহার করছি val, যেহেতু valপদ্ধতিটি ডিআইভি উপাদানটির সাথে কাজ করছে বলে মনে হচ্ছে না।


হাই জিউ, পাঠ্যটি যখন ইনপুট হয় তখন আমি তার সাথে কাজ করিনা ... বরং যখন এটি প্রদর্শিত হয় এবং আমার টেবিলের বিন্যাসটি ভেঙে দেয়। ক্যোরিস্ট্রিং পাঠ্যটি .tasks-overflow নামক একটি ডিআইভিতে প্রদর্শিত হবে
নাসির

@ নাসির ইঙ্গিতটির জন্য ধন্যবাদ; আমি আমার উত্তর আপডেট করেছি; এটি আপনাকে আপনার সামান্য সমস্যাটি সমাধান করতে সহায়তা করবে
জিউসেপ্প অ্যাকাপুটো

হাই জিউ, আমি আপনার কোড চেষ্টা করেছি এবং এটি কার্যকর হয়নি। আমি এই দীর্ঘ স্ট্রিংটি চাইছি 'এইিসনেলোওউওooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongquerystring' 'থিসিসনেলো ...' হিসাবে প্রদর্শিত হোক ...
নাসির

কোডটি এইভাবে দেখায়: $ (দস্তাবেজ)। প্রস্তুত (ফাংশন () {$ (".টাস্কস-ওভারফ্লো: এতে রয়েছে ('http: //')") chচ (ফাংশন () {var স্ব = $ (এটি ), txt = self.text (); txt = txt.replace (/ (HTTP [s] *: [\ / \] {2})) [^ \ গুলি] * / জি, '$ 1 ...'); self.text (txt);}); // গিউ কোড ভের এলেম = $ ("। কার্য-ওভারফ্লো"); যদি (এলেম) {যদি (এলেম। ভাল ()। সাবস্ট্রাস্ট (0,10))}});
নাসির

@ নাসির আমি দুঃখিত! আমার পুরানো উত্তরটিতে valপদ্ধতিটি রয়েছে যা ডিআইভি উপাদানগুলির জন্য কাজ করে বলে মনে হয় না। আমি আমার উত্তরটি আবার আপডেট করেছি এবং এখন textপাঠ্যটি পরিবর্তনের জন্য পদ্ধতিটি ব্যবহার করা হয়েছে, যা পুরোপুরি কাজ করা উচিত (এটি স্থানীয়ভাবে পরীক্ষা করা হয়েছে)। আপনি কি আমার আপডেট কোড সহ এটি আবার পরীক্ষা করতে পারেন এবং আমাকে জানান?
জিউসেপে অ্যাকাপুটো

21

নিজস্ব উত্তর তৈরি করা, কারণ কেউ বিবেচনা করেনি যে বিভাজনটি ঘটবে না (সংক্ষিপ্ত পাঠ্য)। সেক্ষেত্রে আমরা প্রত্যয় হিসাবে '...' যুক্ত করতে চাই না।

টার্নারি অপারেটর এটিকে বাছাই করবে:

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));

19
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

ফলাফলের ভেরিয়েবলটিতে "আমি খুব এল ..." থাকে



5

এইচটিএমএল

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

জাভাস্ক্রিপ্ট (ডক প্রস্তুত)

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);

4
.text () চেয়ে বেশি উপযুক্ত .html () যখন শুধুমাত্র টেক্সট সঙ্গে তার আচরণ।
অ্যান্ডি ই

হাই sje397, এই স্ট্রিংয়ের আগে এবং পরে আমার অন্যান্য শব্দগুলি উপেক্ষা করতে সক্ষম হওয়া দরকার (এই স্ট্রিংটি দীর্ঘ ক্যোরিস্টিং এবং এর কোনও স্পেস নেই) ধন্যবাদ
নাসির

@ নাসির - আপনি যুক্তিগুলিকে সাবস্ট্রিটে পরিবর্তন করতে পারেন ... বা আপনি নিয়মিত প্রকাশের দিকে নজর দিতে পারেন।
sje397

4

আপনি দশটি অক্ষরে স্ট্রিংটি কেটে ফেললে আপনার কী করা উচিত তা হল &hellip;তিন পিরিয়ডের পরিবর্তে প্রকৃত এইচটিএমএল উপবৃত্ত সত্তা যুক্ত করুন ।


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) + "..."
    });
}});


আপনি এটি প্রথম লাইনে আপনার এইচটিএমএল উপাদানটি দেন এবং তারপরে এটি সম্পূর্ণ পাঠ্য লাগে, 10 টি অক্ষরের দীর্ঘ সংস্করণ সহ ইউআরএলগুলি প্রতিস্থাপন করে এবং আপনাকে তা ফিরিয়ে দেয়। ইউআরএল অক্ষরগুলির মধ্যে কেবল 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 টি অক্ষরে সীমাবদ্ধ করবে না, তবে ব্রাউজারটি সিএসএসের সাহায্যে আপনার জন্য কাজটি করতে দেয় না কেন:

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

এবং তারপরে যে টেবিল সেলে স্ট্রিং রয়েছে তার জন্য উপরের শ্রেণিটি যুক্ত করুন এবং সর্বাধিক অনুমোদিত প্রস্থ নির্ধারণ করুন। স্ট্রিংয়ের দৈর্ঘ্য পরিমাপের উপর ভিত্তি করে ফলাফলের চেয়ে ভাল কিছু করা উচিত।


1

@ jolly.exe

দুর্দান্ত উদাহরণ জলি। আমি আপনার সংস্করণ আপডেট করেছি যা শব্দের সংখ্যার বিপরীতে অক্ষরের দৈর্ঘ্যকে সীমাবদ্ধ করে। আমি আসল আসল অভ্যন্তরীণ এইচটিএমএলে শিরোনামটি সেট করাও যুক্ত করেছি, যাতে ব্যবহারকারীরা ঘোরাফেরা করতে পারে এবং কী কাটা হয়েছে তা দেখতে পায়।

এইচটিএমএল

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

জেএস

 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'); 


-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;
            }
         };

আপনি এখানে শব্দ বিবেচনা করছেন। প্রশ্নে চরিত্রগুলি উল্লেখ করা হয়েছে
ভিক্টর ফার্নান্দিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.