VB.NET

2012-11-06 11 views
12

में स्ट्रिंग में वर्णों के माध्यम से लूपिंग मैं विजुअल बेसिक परीक्षा की तैयारी में पिछले परीक्षा पत्रों पर काम करने में व्यस्त हूं। मुझे निम्नलिखित प्रश्नों के साथ मदद की ज़रूरत है जो मैं फंस गया हूं।VB.NET

एक समारोह प्रक्रिया लिखें समय की संख्या की गणना करने के पात्रों "ई", "च" और "जी" एक स्ट्रिंग में प्रकट होता है

मैं छद्म कोड लिखने की कोशिश की और साथ आया था निम्नलिखित।

Loop through each individual character in the string 
If the character = "e","f" or "g" add 1 to number of characters 
Exit loop 
Display total in messagebox 

मैं कैसे एक स्ट्रिंग (एक for पाश का उपयोग) में अलग-अलग पात्रों के माध्यम से लूप करते हैं और कैसे मैं एक विशिष्ट चरित्र एक स्ट्रिंग में दिखाए जाने की गिनती करते हैं?

उत्तर

12

उत्तर इस बात पर निर्भर करता है कि आपने अपने पाठ्यक्रम के काम में क्या सीखा है और आप किस कार्य का उपयोग करना चाहते हैं।

लेकिन सामान्य रूप में, एक स्ट्रिंग में वर्णों से अधिक पाशन इस उतना ही आसान है:

Dim s As String = "test" 

For Each c As Char in s 
    ' Count c 
Next 

गिनती का सवाल है, बस हर किरदार के लिए अलग काउंटर चर (eCount As Integer आदि) और उन्हें बढ़ाने के जब c उस चरित्र के बराबर है - जाहिर है कि जब आप गिनने के लिए वर्णों की संख्या बढ़ाते हैं तो दृष्टिकोण अच्छी तरह से स्केल नहीं होता है। इसे प्रासंगिक पात्रों के शब्दकोश को बनाए रखकर हल किया जा सकता है लेकिन मुझे लगता है कि यह आपके अभ्यास के लिए बहुत उन्नत है।

+0

Thanx कोनराड वास्तव में अपने इनपुट की सराहना करते हैं:

अपने प्रश्न मानते हुए पाठ आप खोज करना चाहते है –

1

एक स्ट्रिंग के माध्यम से लूपिंग सरल है: एक स्ट्रिंग को वर्णों की सूची के रूप में माना जा सकता है, जिसे लूप किया जा सकता है।

Dim TestString = "ABCDEFGH" 
for i = 0 to TestString.length-1 
debug.print(teststring(i)) 
next 

और भी आसान एक for..each पाश होगा, लेकिन कभी कभी एक मैं पाश के लिए बेहतर

संख्या मैं एक शब्दकोश का प्रयोग करेंगे इस तरह की गिनती के लिए है:

 Dim dict As New Dictionary(Of Char, Integer) 
     dict.Add("e"c, 0) 
Beware: a dictionary can only hold ONE item of the key - that means, adding another "e" would cause an error. 
each time you encounter the char you want, call something like this: 
     dict.Item("e"c) += 1 
0

यदि आपको लिंक (या आप सीखना चाहते हैं) लिंक करने की अनुमति है, तो आप Enumerable.GroupBy का उपयोग कर सकते हैं।

Dim text = "H*ow do i loop through individual characters in a string (using a for loop) and how do I count the number of times a specific character appears in a string?*" 
Dim charGroups = From chr In text Group By chr Into Group 

Dim eCount As Int32 = charGroups.Where(Function(g) g.chr = "e"c).Sum(Function(g) g.Group.Count) 
Dim fCount As Int32 = charGroups.Where(Function(g) g.chr = "f"c).Sum(Function(g) g.Group.Count) 
Dim gCount As Int32 = charGroups.Where(Function(g) g.chr = "g"c).Sum(Function(g) g.Group.Count)