我只能使用vba或java找到答案。 我从文本框中获取用户输入并计算给定的大写字符数。 这是功课,所以如果你能指出我正确的方向,我会非常感激。
Private Sub BtnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGo.Click
Dim Phrase As String
Dim CharPhrase As Char 'Convert Phrase to char for sting comparison
Dim Counter As Integer = 0 'used to measure the characters in textbox
Dim Caps As Integer = 0 'How many capitals are there?
Phrase = TxtboxPhrase.Text
If Phrase.Length <= 15 Then
MsgBox("There must be at least 15 characters in textbox")
Exit Sub
End If
While Counter <= Phrase.Length
'Code for counting here
End While
MsgBox("There are " & Caps & " capital letters in the current phrase")
Call ProgQuit()
End Sub
答案 0 :(得分:3)
我是C#开发人员,但这是我在VB.NET中使用的算法:
Private Function CountUpper(str As String) As Integer
Dim ucount As Integer = 0
For Each c As Char In str
Dim charCode As Integer = AscW(c)
If charCode >= 65 AndAlso charCode < 91 Then
ucount += 1
End If
Next
Return ucount
End Function
编辑:我通过C#到VB转换器运行此代码,因此可能存在一些问题。我刚刚解决了一个明显的问题。
答案 1 :(得分:0)
我假设你在这里使用VB.NET,它看起来像你,但我编写C#,而不是VB,所以我不确定。您将需要遍历字符串。您可以轻松完成此操作,因为string
实施了IEnumerable
。
您可以使用两种方法来测试大小写。您可以将其转换为整数,并查看它是否高于整数值A或低于Z的整数值。您还可以考虑将字符串与字符数组进行比较。
答案 2 :(得分:0)
您可以使用substr
获取字符串的子字符串。例如,您的字符串的第三个字符可以通过以下方式获得:
Dim StrCh as String
: :
StrCh = Phrase.Substring (2,1)
第三个字符是2
,因为第一个字符位于0
位置。 1
是从该位置开始提取的字符数。
然后你可以检查字符是否为大写,通过检查字符是否在大写时更改 - 如果不是,则字符已经大写。类似的东西:
If StrCh = StrCh.ToUpper() Then
... is uppercase
End If
这些提示应足以让您完成工作。
答案 3 :(得分:0)
使用 LINQ,您可以:
Dim Caps As Integer = (From x As Char In Phrase.ToCharArray() Where Char.IsUpper(x) Select x).ToArray().Count