2016-09-28 215 views
0

正如它在標題中所說的,即時通訊編寫了一個非常簡單的編碼和解碼程序,使用turbo pascal for school和im無法找到替換字符串中某些字符的解決方案。Turbo Pascal:在字符串中替換字符與其他字符

THX的幫助

+1

[幫助/切合主題]:*問題,要求作業幫助必須包括到目前爲止你做過解決PROBL的工作總結em,並描述你解決問題的難度*如果你不能開始你的任務,請向你的老師尋求幫助。如果它不是家庭作業,請編輯您的問題以包含迄今爲止所寫的代碼,這些代碼對您無效,並且詢問與該代碼有關的特定問題。我們不是代碼編寫服務。 –

回答

3

由於這是家庭作業,我不會給你的代碼,這樣做,而是解釋如何使用TP的字符串處理設施,做到這一點。我已經安裝了TP的工作副本數年了,但是從內存中獲得:

TP中字符串的關鍵在於它可以聲明的最大長度爲255,並且實際上是這些字符的數組(數字1 .. max)前面有一個「長度」字節,表示字符串中當前的字符數。

所以,如果你有這樣的聲明

var S : String[20]; 

你可以像這樣

S := 'Hello World'; 

一個任務,並可以作爲

S[1] 

,其值是訪問單個字符'H',

S[2] 

這就是'e'等。永遠不要假設任何有關Length()函數返回的字符串當前長度以外的字符。

所以,替換子字符串中的,一種方法是

  1. 查找字符串中的子串的位置。你可以使用TP的Pos()函數。

  2. 如果pos()找到字符串,它會返回一個正整數,否則爲0。讓我們調用的返回值P.

  3. 如果P小於零,您可以使用TP的Delete()過程更大從字符串中刪除指定數量的字符,從指定的位置開始。因此,您可以在字符串上調用Delete,將P作爲開始位置,將Length(SubString)作爲要刪除的字符數。

  4. 然後,您可以使用TP的插入過程插入替換子字符串,從P開始,找到原始子字符串的位置。

  5. 上述步驟是將長度不等的子字符串替換爲長度不同的字符串,甚至是空的(在這種情況下,只需省略Insert()調用。在你想通過另一個單人做一客一換一替換字符串中的一個單字符的情況下,你可以通過直接分配做到這一點,因爲在

    S[2] := S[1];

所以S成爲「世界HHllo」

S[1] := 'A'; 
+1

thx幫助,我會盡我所能。也thx不只是給我的代碼。我寧願自己學習,而不僅僅是複製粘貼 – Nikolas

+1

這是一個很好的態度。如果你卡住了,只需要提示一下。 – MartynA

+0

Martyn,因爲OP表示在en /譯碼方面'用其他字符替換字符',也許你可以在直接分配中增加第五點。 –