สร้าง GUID โดยไม่มียัติภังค์


110

ฉันกำลังสร้าง GUID โดยใช้คำสั่งต่อไปนี้ในรหัสของฉัน

byte[ ] keyBytes = Encoding.UTF8.GetBytes( Guid.NewGuid( ).ToString( ).Substring( 0, 12 ) );

แต่เมื่อสร้าง GUID ฉันพบว่ามีอักขระยัติภังค์ด้วย ฉันจะสร้าง GUID ที่มีเฉพาะตัวอักษร (ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) และตัวเลขได้อย่างไร ฉันไม่ต้องการยัติภังค์ ใครช่วยให้ความคิดฉัน

คำตอบ:


281

โปรดทราบว่าคุณกำลังพูดถึงการแสดงสตริง (บัญญัติ) ของ Guid Guid นั้นเป็นค่าจำนวนเต็ม 128 บิต

คุณสามารถใช้ตัวระบุ "N" กับGuid.ToString(String)โอเวอร์โหลด

Guid.NewGuid().ToString("N");

โดยตัวอักษรเริ่มต้นคือตัวพิมพ์เล็ก Guid ที่มีเฉพาะตัวอักษรตัวพิมพ์ใหญ่สามารถทำได้โดยการแปลงทั้งหมดเป็นตัวพิมพ์ใหญ่ด้วยตนเองเท่านั้นตัวอย่าง:

Guid.NewGuid().ToString("N").ToUpper();

คำแนะนำที่มีเพียงตัวอักษรหรือตัวเลขไม่สมเหตุสมผล การแทนค่า guid string เป็นเลขฐานสิบหกดังนั้น (เป็นไปได้มากที่สุด) จะมีทั้งสองอย่างเสมอ


เป็นไปได้ไหมที่จะสร้าง GUID ที่มีทั้งตัวพิมพ์บนและตัวพิมพ์เล็กพร้อมตัวเลข ???
Harish Kumar

8
@HarishKumar ที่ไม่สมเหตุสมผล สตริง GUID เป็นเลขฐานสิบหก ในสัญกรณ์นั้น 'a' จะเหมือนกับ 'A' แม้ว่าด้วยเหตุนี้คุณจึงสามารถพิมพ์ตัวอักษรทุกตัวในปลอกที่คุณต้องการได้ (แต่ฉันไม่เห็นประเด็นเลย)
Christian.K

แต่สิ่งที่ฉันต้องการคือ guid string ซึ่งเป็นส่วนผสมของตัวพิมพ์เล็กตัวพิมพ์ใหญ่และตัวเลข ... ฉันจะเรียงลำดับได้หรือไม่ ???
Harish Kumar

7
@HarishKumar คุณจะตัดสินใจได้อย่างไรว่าตัวอักษรใดควรอยู่บนและตัวพิมพ์เล็กควรเป็นอย่างไร แน่นอนคุณมีอิสระที่จะใช้string.Replace(char, char)เพื่อให้บรรลุสิ่งนั้น แต่จริงๆแล้วมันไม่มีจุดหมายและไม่จำเป็น ลองโพสต์คำถามใหม่และลองถามสิ่งที่คุณต้องการบรรลุจริงๆดูเหมือนว่าจะเป็นมากกว่าแค่การกำจัดขีดกลางในสตริง GUID
Christian.K

0
Guid.NewGuid().ToString().Replace("-", string.Empty)

21
แม้ว่าสิ่งนี้จะทำงานได้ดี แต่ก็เป็นงานพิเศษ (และส่วนใหญ่จะเป็นการจัดสรรสตริงที่ไม่จำเป็น)
Christian.K
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.