我需要帮助。 可能是“循环”命令与此有用,但我不知道该怎么做。 对不起,英语不好:P 继承人更多细节;
我不想再在我的VB.Net应用程序中使用此代码:
Dim s As String = TypeHere.Text ' Heres target: TypeHere.Text
Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
If Words.Length > 0 Then
c1 = Words(0)
If Words.Length > 1 Then
c2 = Words(1)
End If
If Words.Length > 2 Then
c3 = Words(2)
End If
If Words.Length > 3 Then
c4 = Words(3)
End If
If Words.Length > 4 Then
c5 = Words(4)
End If
If Words.Length > 5 Then
c6 = Words(5)
End If
If Words.Length > 6 Then
c7 = Words(6)
End If
If Words.Length > 7 Then
c8 = Words(7)
End If
If Words.Length > 8 Then
c9 = Words(8)
End If
If Words.Length > 9 Then
c10 = Words(9)
End If
If Words.Length > 10 Then
c11 = Words(10)
End If
If Words.Length > 11 Then
c12 = Words(11)
End If
If Words.Length > 12 Then
c13 = Words(12)
End If
If Words.Length > 13 Then
c14 = Words(13)
End If
If Words.Length > 14 Then
c15 = Words(14)
End If
If Words.Length > 15 Then
c16 = Words(15)
End If
If Words.Length > 16 Then
c17 = Words(16)
End If
If Words.Length > 17 Then
c18 = Words(17)
End If
If Words.Length > 18 Then
c19 = Words(18)
End If
If Words.Length > 19 Then
c20 = Words(19)
End If
CMDTime()
End If
我该怎么做呢?:
If Words.Length > ? Then
Dim c?+1 = Words(?)
End If
如果用户输入单词的长度:4 自动生成:
Dim c5 = Words(4)
Dim c4 = Words(3)
Dim c3 = Words(2)
Dim c2 = Words(1)
Dim c1 = Words(0)
我的程序示例; 用户> textbox.text>输入了多少单词> dim c1> word1,dim c2 ...
答案 0 :(得分:0)
为什么不使用数组?由于我看不到完整的代码,因此我不完全了解您要做什么。
async def f():
await asyncio.sleep(1)
print('Hello')
async def g():
await asyncio.sleep(0.5)
print('Goodbye')
async def main():
t1 = asyncio.ensure_future(repeat(3, f))
t2 = asyncio.ensure_future(repeat(2, g))
await t1
await t2
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
输出:
Dim s As String = "The quick brown fox jumps over the lazy dog"
Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
Dim c(Words.Length - 1) As String
For x = 0 To Words.Length - 1
c(x) = Words(x)
Next
Console.WriteLine(String.Join("-", c))
Console.WriteLine(c(0))
Console.WriteLine(c(1))
答案 1 :(得分:0)
最简单的答案是:不,您不能这样做:
'Nooooo!
If Words.Length > ? Then
Dim c?+1 = Words(?)
End If
但是...您是一名程序员,所以一切皆有可能!刚开始时并不总是如此。
您不能使用动态名称在循环中使变量变暗,但是有替代方法。例如,您可以拥有一个变量列表,您可以在循环的每一遍添加这些变量。
但这还不够,因为您的意思是变量名有意义。因此,您必须创建一个KeyValuePair列表。键将是有意义的数字,而值将是字符串。像这样:
Dim myList As New List(Of KeyValuePair(Of Integer, String))
Dim index As Integer = 0
For Each s As String In words
index += 1
myList.Add(New KeyValuePair(Of Integer, String)(index, s))
Next
但是,实际上,这种方法有点古怪,将不必要地难以使用。
另一方面,您可以将数组Words()
声明为类中的模块化变量,并在每次需要使用它时对其进行更新。您之前的代码段将缩短为:
Dim s As String = TypeHere.Text ' Heres target: TypeHere.Text
Words = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
If Words.Length > 0 Then
CMDTime()
End If
现在,您知道Words(0)
与c1相同。您可以改用Words(0)。但是要小心,因为如果您对这样的索引进行硬编码,则越界有时可能会崩溃。您可以像以前一样通过在If Words.Length > x Then
块中保护弱代码来避免这种情况。或者,我更喜欢,如果您必须遍历数组中的每个条目,请在For Each
循环中进行。如果数组中的项目为零,则此循环不会崩溃。
考虑时,您已经在做或几乎在做。您一直都有答案!这不是魔术吗?
如果这没有帮助,请尝试精确确定您要查找的内容。肯定有人会接球并帮忙!
玩得开心!
答案 2 :(得分:0)
您所需要的只是您的前两行代码:
Dim s As String = "Hello World"
Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
然后您可以执行以下操作:
Console.WriteLine(Words.Length)
Console.WriteLine(Words(0))
Console.WriteLine(Words(1))
产生:
2 Hello World
仅在您使用c1
的地方将其替换为Words(0)
,将c2
替换为Words(1)
,依此类推。您将使用Words.Length
来知道有多少个你有话。