2009-04-10 7 views

उत्तर

41

में के रूप में लंबाई 1 के साथ उपयोग substr:

$nth = substr($string, n-1, 1); 

इसके अलावा अन्य समाधान के लिए perlmonks देखने।

21
$char = substr($mainstring, $i , 1); 

ऐसा करने का एक तरीका है, शायद सबसे स्पष्ट।

तो तुम क्या चाहते थे सांख्यिक मूल्य था और आप इस बहुत सारी करने के लिए इच्छुक गया:

print join ",", unpack("W*","hello") ; 
# 104,101,108,108,111 

उचित यूनिकोड/UTF8 के लिए:

unpack("W*","hello") 

चार मूल्यों की एक सरणी देता है सामान जो आप

use utf8; 
unpack("U*","hello\0ƀ\n") 
# 104,101,108,108,111,0,384,10 
+0

या सिर्फ 'ord (substr ($ mainstring, $ मैं, 1))' –

+0

बात यह है कि आम तौर पर जब आप एक चरित्र का मूल्य चाहते हैं, आप उन सभी का मान चाहते हैं, और के माध्यम से पाशन ord (substr()) अनपॅक संस्करण की तुलना में कम कुशल, और पढ़ने के लिए कठिन, और डीबग करने के लिए कठिन दोनों होने जा रहा है। –

2

Corol का उपयोग करना चाहते हैं अन्य substr() उत्तरों के लिए लरी है कि आप इसे पर मानों को भी इंडेक्स पर उपयोग कर सकते हैं। यह इसे लालू या अतिरिक्त तर्क के साथ समर्थन करता है। यह splice के समान भी है, जो एक ही बात है, लेकिन सरणी के लिए।

$string = "hello"; 
substr($string, 2, 2) = "this works?"; 
substr($string, 2, 2, "same thing basically"); 
@a = qw(s t r i n g s a n d t h i n g s); 
@cut_out = splice(@a, 2, 2); 
@cut_out = splice(@a, 2, 2, @replacement); 
+0

किसी को 'substr (x, y, z) = foo' को' substr (x, y, z, foo) 'के बराबर इंगित करना चाहिए, लेकिन बाद के नोटेशन की अनुशंसा की जाती है क्योंकि पूर्व अक्सर नए लोगों को भ्रमित कर रहा है। –

+0

आपने अभी किया है! मुझे लगता है कि मैंने मूल रूप से "वही चीज़" वाक्यांश में भी किया था। मैं मानता हूं कि इस उदाहरण को देखकर एक नौसिखिया सबस्ट्र के लिए पॉड पेज को फायर करेगा और एलवीALUE जादू को नोटिस करेगा और चार तर्क फॉर्म का उपयोग करेगा क्योंकि एलवीएमएल फॉर्म अजीब और डरावना है - और यह पॉड पर ऐसा कहता है। शायद मुझे नए लोगों में बहुत अधिक विश्वास है? – jettero

संबंधित मुद्दे

 संबंधित मुद्दे