我想在vb.net中有一段代码或函数,可以向后写一个句子。
例如:我喜欢visual basic
结果:基本的视觉爱我
这是我到目前为止所做的:
Dim name As String
Dim namereversed As String
name = RichTextBox1.Text
namereversed = ""
Dim i As Integer
For i = Len(name) To 1 Step -1
namereversed = namereversed & Replace(name, i, 1)
Next
RichTextBox2.Text = namereversed
代码有效,但它没有给我我想要的价值。它使整个单词反转。
答案 0 :(得分:0)
Dim name As String = "i love visual basic"
Dim reversedName As String = ""
Dim tempName As String = ""
For i As Integer = 0 To name.Length - 1
If Not name.Substring(i, 1).Trim.Equals("") Then
tempName += name.Substring(i, 1)
Else
reversedName = tempName + " " + reversedName
tempName = ""
End If
Next
从索引0开始并从长度中扣除1,因为长度计数从1开始,但索引计数从零开始。如果您放置To name.Length
,它将返回IndexOutOfBounds
。从0 To Length-1
循环它,因为你需要原样而不是向后拼写......反过来的是单词所以添加一个临时的String变量来存储每个单词并在保存的句子/单词之前添加它。
或使用此
Dim strName As String() = name.Split(" ")
Array.Reverse(strName)
reversedName = String.Join(" ", strName)
答案 1 :(得分:0)
这是我的贡献,你可以看到它不难做到,它非常简单。还有很多其他方法更短。
Console.Title = "Text Reverser"
Console.ForegroundColor = ConsoleColor.Green
'Text which will be Reversed
Dim Text As String
Console.Write("Write your text: ")
Text = Console.ReadLine
Console.Clear()
Dim RevText As String = "" '← The Text that will be reversed
Dim Index As Int32 = Text.Length '← Index used to write backwards
'Fill RevText with a char
Do Until RevText.Length = Text.Length
RevText = RevText.Insert(0, "§")
Loop
Console.WriteLine(RevText)
'Replace "Spaces" with Character, using 'Index' to know where go the chars
For Each Caracter As Char In Text
Index -= 1 'Rest 1 from the Index
RevText = RevText.Insert(Index, Caracter) '← Put next char in the reversed text
'↓ Finished reversing the text
If Index = 0 Then
RevText = RevText.Replace("§", "") 'Replace char counter to nothing
Console.WriteLine("Your text reversed: " & RevText) '← When Index its 0 then write the RevText
End If
Next
'Pause
Console.ReadKey()
我在控制台中完成了这个项目,但是你知道,你可以在普通的Windows窗体中使用这个代码。 这是 Stackoverflow 中的第一个答案:)