【问题标题】:Turbo Pascal: Replace character in String with other characterTurbo Pascal:用其他字符替换字符串中的字符
【发布时间】:2024-01-01 12:00:01
【问题描述】:

正如标题中所说,我正在为学校使用 turbo pascal 编写一个非常简单的编码和解码程序,但我无法找到替换字符串中某些字符的解决方案。

感谢帮助

【问题讨论】:

  • 来自help center请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您遇到的困难的描述 如果您无法开始作业,请向您的教师寻求帮助。如果这不是家庭作业,edit 你的问题包括你迄今为止编写的不适合你的代码,并询问与该代码相关的特定问题。我们不是代码编写服务。

标签: string replace char str-replace pascal


【解决方案1】:

由于这是家庭作业,我不会给你代码,而是解释如何使用 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() 调用。在您想要做一个单向的情况下-one 将字符串中的单个字符替换为另一个单个字符,您可以通过直接赋值来完成,如

    S[2] := S[1];

所以 S 变成了 'HHllo World'

S[1] := 'A';

【讨论】:

  • 感谢您的帮助,我会尽力而为。也谢谢你不只是给我代码。我宁愿自己学而不是复制粘贴
  • 这是个好态度。如果您遇到困难,请寻求提示。
  • Martyn,因为 OP 在编码/解码方面说“用其他字符替换字符”,也许你可以添加关于直接分配的第五点。
  • @TomBrunberg,很好,谢谢。关于这一点,我已经添加了第 5 点。
  • @Nikolas:顺便说一句,如果你得到一个对你有帮助的答案,最好通过点击答案左上角的绿色“勾号”图标来养成“接受”它的习惯。这样做会稍微提高提问者和回答者的声誉,也让问答在 SO 上更加突出,因此可能更有可能帮助未来的读者。
最近更新 更多