問題描述
本題目為字串處理問題,程式需讀取一行英文字串,並依據讀入相關之指令,
來編修該字串。程式開始執行時,游標位於該英文字串的第一個字元。編修字串的指令
如下:
0 - 移動游標至目前所在行的第一個字元。
$ - 移動游標至字串的結束位置(即最後一個字元的下一個位置)。
x - 刪除目前游標所在位置的字元(如果在字串的結束位置則不做任何動作)。
s - 與游標所在位置的右邊字元做交換動作(如果游標在結束位置或結束位置的前一
個位置,則不做任何動作)。
i - 在游標所在位置插入字元。如指令 ‘ix’ ,則是在游標目前所在位置前插入字元
‘x’,游標停留在原始的位置(即所插入‘x’ 的下一位置)。
u - 如果游標所在位置之資料為英文字母,則將該字母改為大寫,並將游標往右移一
個位置,如不是英文字母,則直接將游標往右移一個位置。
+ - 將游標向右移一個位置。
- - 將游標向左移一個位置。
本題目為字串處理問題,程式需讀取一行英文字串,並依據讀入相關之指令,
來編修該字串。程式開始執行時,游標位於該英文字串的第一個字元。編修字串的指令
如下:
0 - 移動游標至目前所在行的第一個字元。
$ - 移動游標至字串的結束位置(即最後一個字元的下一個位置)。
x - 刪除目前游標所在位置的字元(如果在字串的結束位置則不做任何動作)。
s - 與游標所在位置的右邊字元做交換動作(如果游標在結束位置或結束位置的前一
個位置,則不做任何動作)。
i - 在游標所在位置插入字元。如指令 ‘ix’ ,則是在游標目前所在位置前插入字元
‘x’,游標停留在原始的位置(即所插入‘x’ 的下一位置)。
u - 如果游標所在位置之資料為英文字母,則將該字母改為大寫,並將游標往右移一
個位置,如不是英文字母,則直接將游標往右移一個位置。
+ - 將游標向右移一個位置。
- - 將游標向左移一個位置。
輸入說明 :
1. 第一行為要編修的英文字串(不超過250 個字元)。
2. 第二行為編修英文字串的指令。
2. 第二行為編修英文字串的指令。
輸出說明 :
請輸出處理完畢之字串。
範例輸入 :
hellol, I am a frog.
$-----xxxxipieirisioin0u++xs
範例輸出 :
Hello, I am a person.
貼文 BY 阿揚
Dim a(100) As String
回覆刪除Dim b(100) As String
Public Sub Form_Load()
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Line Input #1, x
Line Input #1, d
For i = 1 To Len(x)
a(i) = Mid(x, i, 1)
Next i
For i = 1 To Len(d)
b(i) = Mid(d, i, 1)
Select Case b(i)
Case Is = "0"
k = 1
Case Is = "$"
k = Len(x) + 1
Case Is = "x"
If k < Len(x) Then
a(k) = ""
Call back(k, x)
End If
Case Is = "s"
If k = Len(x) Or k = Len(x) + 1 Then
Else
st = a(k): a(k) = a(k + 1): a(k + 1) = st
End If
Case Is = "i"
i = i + 1
Call forward(k, x)
a(k) = Mid(d, i, 1)
k = k + 1
Case Is = "u"
a(k) = UCase(a(k))
k = k + 1
Case Is = "+"
k = k + 1
Case Is = "-"
k = k - 1
End Select
Next i
For i = 1 To Len(x)
Print #2, a(i);
Next i
Close #1
Close #2
End Sub
Public Sub back(p, s)
For i = p To Len(s) + 1
a(i) = a(i + 1)
a(i + 1) = ""
Next i
End Sub
Public Sub forward(ByVal p, s)
For i = Len(s) + 1 To p + 1 Step -1
a(i) = a(i - 1)
a(i - 1) = ""
Next i
End Sub
by 阿揚