मैं पर्ल में "एक विशिष्ट लंबाई तक एक स्ट्रिंग को छोटा करने" में असमर्थ हूं। क्या कोई भी निर्मित तरीका है?पर्ल में एक विशिष्ट लंबाई में एक स्ट्रिंग को कैसे छंटनी करें?
अद्यतन:
इनपुट: $str = "abcd";
निर्गम (3 अक्षरों के लिए काट-छांट): $ str abc
मैं पर्ल में "एक विशिष्ट लंबाई तक एक स्ट्रिंग को छोटा करने" में असमर्थ हूं। क्या कोई भी निर्मित तरीका है?पर्ल में एक विशिष्ट लंबाई में एक स्ट्रिंग को कैसे छंटनी करें?
अद्यतन:
इनपुट: $str = "abcd";
निर्गम (3 अक्षरों के लिए काट-छांट): $ str abc
आप substr()
फ़ंक्शन का उपयोग करना चाहते हैं।
$shortened = substr($long, 0, 50); # 50 characters long, starting at the beginning.
अधिक के लिए, perldoc
perldoc -f substr
का उपयोग आपके मामले में, यह होगा:
$str = 'abcd';
$short = substr($str, 0, 3);
उत्तर के लिए धन्यवाद :) –
अगर मैं सही ढंग से समझ है, तो आप php
wordwrap()
एक स्ट्रिंग की तरह करने की जरूरत है, इसलिए:
use Text::Format;
print Text::Format->new({columns => 50})->format($string);
यदि तुम सिर्फ पहला एन पात्रों की जरूरत है:
print substr $string, 0, 50;
जब तक आपके मूल स्ट्रिंग कम से कम 3 वर्ण लंबा है, तो आप उपयोग कर सकते हैं एक lvalue के रूप में substr
पर एक कॉल।
my $str = "abcd";
substr($str, 3) = "";
print "$str\n"; # prints "abc"
स्ट्रिंग की प्रारंभिक लंबाई, जांच की जानी है कि यह कम से 3 अक्षरों, वापसी के लिए (अधिक जानकारी के लिए perldoc -f substr
देखें) नहीं सौंपा जा सकता है substr
को यह कॉल के महत्व है और करने के लिए प्रयास की आवश्यकता हो सकती ऐसा करने से एक त्रुटि होगी।
या आप ऐसा करने के लिए regexp का उपयोग कर सकते हैं।
#!/usr/bin/perl -w
use strict;
my $str = "abcd";
$str =~ /(\w{0,3})/;
print $1;
मनमाना लंबाई के एक स्ट्रिंग है, जहां truncate लंबाई स्ट्रिंग की लंबाई से अधिक समय हो सकता है के लिए, मैं एक प्रतिस्थापन
$str =~ s/.{3}\K.*//s;
छोटे तार के लिए के लिए चुनते हैं, प्रतिस्थापन से मेल नहीं खाएगी और स्ट्रिंग होगा अपरिवर्तित हो।सुविधाजनक \K
भागने एक lookbehind अभिकथन, या एक सरल कब्जा करने के साथ बदला जा सकता है:
s/(?<=.{3}).*//s # lookbehind
s/(.{3}).*/$1/s # capture
रुचि रखने वालों के लिए नोट: perl v5.20 (कम से कम) में, दिखने वाले दावे की लंबाई 255 तक सीमित है। – Bentoy13
सबसे प्राकृतिक तरीका हिस्सा आप चाहते हैं निकालने के लिए substr उपयोग करने के लिए है:
$first_n = substr($string, 0, $n);
यदि आप केवल चाहते हैं स्ट्रिंग को संशोधित करने और आप इसे कम से कम इच्छित लंबाई है कुछ कर रहे हैं:
substr($string, $n) = '';
आप निश्चित नहीं हैं, तो आप कर सकते हैं:
+०१२३५१६४१०६१use List::Util "min";
substr($string, min($n, length($string))) = '';
या अपवाद को पकड़ने:
eval { substr($string, $n) = '' };
यह substr()
या नियमित अभिव्यक्ति के बजाय, यह भी है कि उल्लेख करने के लिए शायद उपयोगी है, आप printf
या sprintf
इस्तेमाल कर सकते हैं।
perldoc -f sprintf
देखें:
स्ट्रिंग रूपांतरण के लिए, एक सटीक निर्दिष्ट करने को स्ट्रिंग ट्रंकेटस निर्दिष्ट चौड़ाई फिट:
printf '<%.5s>', "truncated"; # prints "<trunc>" printf '<%10.5s>', "truncated"; # prints "< trunc>"
आप बेहतर स्पष्टता के लिए एक नमूना इनपुट/आउटपुट दे सकते हैं? –