2012-11-06 65 views
12

Tôi đang bận làm việc trên các bài kiểm tra trước đây để chuẩn bị cho kỳ thi Visual Basic. Tôi cần giúp đỡ với câu hỏi sau đây mà tôi đang mắc kẹt.Lặp qua các ký tự trong một chuỗi trong VB.NET

Viết một thủ tục chức năng để tính toán số lần các ký tự "e", "f" và "g" xuất hiện trong một chuỗi

Tôi cố gắng để viết mã giả và đã đưa ra sau đây.

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 

Làm cách nào để lặp lại các ký tự riêng lẻ trong chuỗi (sử dụng vòng lặp for) và làm cách nào để đếm số lần một ký tự cụ thể xuất hiện trong chuỗi?

Trả lời

12

Câu trả lời phụ thuộc rất nhiều vào những gì bạn đã học được trong công việc khóa học của bạn và những chức năng bạn được cho là sẽ sử dụng.

Nhưng nói chung, Looping trên các nhân vật trong một chuỗi là dễ dàng như thế này:

Dim s As String = "test" 

For Each c As Char in s 
    ' Count c 
Next 

Đối đếm, chỉ cần có các biến riêng biệt truy cập (eCount As Integer vv) cho mỗi nhân vật và tăng chúng khi c bằng nhân vật đó - rõ ràng là cách tiếp cận đó không mở rộng tốt khi bạn tăng số lượng ký tự để đếm. Điều này có thể được giải quyết bằng cách duy trì một từ điển của các nhân vật có liên quan nhưng tôi đoán rằng điều này là quá cao cho tập thể dục của bạn.

+0

Thanx Konrad thực sự đánh giá cao đầu vào của bạn –

1

Lặp qua chuỗi là đơn giản: chuỗi có thể được coi là danh sách các ký tự, có thể được lặp lại.

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

thậm chí dễ dàng hơn sẽ là một vòng lặp for..each, nhưng đôi khi một cho i loop là tốt hơn

Đối đếm số liệu mà tôi sẽ sử dụng một cuốn từ điển Như thế này:

 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

Nếu bạn được phép sử dụng (hoặc bạn muốn tìm hiểu) LINQ, bạn có thể sử dụng Enumerable.GroupBy.

Giả sử câu hỏi của bạn là nội dung bạn muốn tìm kiếm:

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) 
Các vấn đề liên quan