69 के बजाय "ई" आउटपुट कैसे प्राप्त करें?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
क्या गोलंग को चार बाइट और इसके विपरीत में बदलने का कार्य है?
69 के बजाय "ई" आउटपुट कैसे प्राप्त करें?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
क्या गोलंग को चार बाइट और इसके विपरीत में बदलने का कार्य है?
जवाबों:
व्याख्या की गई स्ट्रिंग शाब्दिक दोहरे वर्णों के बीच वर्ण अनुक्रम हैं "" (संभवतः मल्टी-बाइट) यूटीएफ -8 व्यक्तिगत पात्रों के एन्कोडिंग का उपयोग करते हुए। UTF-8 में, ASCII वर्ण पहले 128 यूनिकोड वर्णों के अनुरूप एकल-बाइट हैं। स्ट्रिंग्स बाइट्स के स्लाइस की तरह व्यवहार करते हैं। एक रन एक यूनीकोड कोड बिंदु की पहचान करने वाला एक पूर्णांक मूल्य है। इसलिए,
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1])) // ASCII only
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}
आउटपुट:
e
e
界
पढ़ें:
भाषा विशिष्टता प्रोग्रामिंग जाओ पर अनुभाग रूपांतरण ।
इस बारे में कैसे ?
fmt.Printf("%c","HELLO"[1])
जैसा कि पीटर बताते हैं, केवल ASCII से अधिक के लिए अनुमति देने के लिए:
fmt.Printf("%c", []rune("HELLO")[1])
स्लाइसिंग के माध्यम से भी किया जा सकता है
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
नोट: यह समाधान केवल ASCII वर्णों के लिए काम करता है।
गो में वास्तव में चरित्र का प्रकार नहीं है। बाइट का उपयोग अक्सर ASCII वर्णों के लिए किया जाता है, और रूनिक का उपयोग यूनिकोड वर्णों के लिए किया जाता है, लेकिन वे दोनों पूर्णांक प्रकारों (uint8 और int32) के लिए केवल उपनाम हैं। इसलिए यदि आप संख्या के बजाय उन्हें वर्णों के रूप में मुद्रित करने के लिए बाध्य करना चाहते हैं, तो आपको उपयोग करने की आवश्यकता है Printf("%c", x)
। %c
प्रारूप विनिर्देश किसी भी पूर्णांक प्रकार के लिए काम करता है।
आप इसे स्ट्रिंग के साथ टाइपकास्ट करने का भी प्रयास कर सकते हैं।
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
एक स्ट्रिंग के रूप में एक चार की व्याख्या करने का सामान्य समाधान है string("HELLO"[1])
।
रिच का समाधान भी निश्चित रूप से काम करता है।
एक स्ट्रिंग में एक चरित्र को अलग करने के लिए एक और समाधान
package main
import "fmt"
func main() {
var word string = "ZbjTS"
// P R I N T
fmt.Println(word)
yo := string([]rune(word)[0])
fmt.Println(yo)
//I N D E X
x :=0
for x < len(word){
yo := string([]rune(word)[x])
fmt.Println(yo)
x+=1
}
}
स्ट्रिंग सरणियों के लिए भी:
fmt.Println(string([]rune(sArray[0])[0]))
// = टिप्पणी की गई पंक्ति
len("cafés")
> len([]rune("cafés"))
और के लिए प्रत्येक यात्रा, पर स्ट्रिंग reconvert सकता है ओ (n²)। बस कर for _, r := range word { fmt.Printf("%c", r) }
। क्या तुम सच में एक सूचकांक के साथ पाश करना चाहता है तो for x := 0; x < limit; x++
। कृपया जवाब देने से पहले भाषा की मूल बातें सीख प्रश्न।
"हैलो"[:1]
कि यह आपको v