Turbo Pascal:用其他字符替换字符串中的字符
Turbo Pascal: Replace character in String with other character
正如标题中所说,我正在为学校编写一个非常简单的使用 turbo pascal 的编码和解码程序,但我无法找到替换字符串中某些字符的解决方案。
感谢帮助
因为这是家庭作业,我不会给你代码来完成它,而是解释如何使用 TP 的字符串处理工具来完成它。我已经安装了 TP 的工作副本很多年了,但从记忆中:
关于 TP 中字符串的关键是它可以用最大长度 255 声明,并且实际上是这些字符的数组(编号 1.. max),前面有一个 "length" 字节,它指示字符串中的当前字符数。
所以,如果你有这个声明
var S : String[20];
你可以做这样的作业
S := 'Hello World';
并且您可以访问单个字符
S[1]
其值为'H',
S[2]
即 'e' 等。永远不要假设任何超出字符串当前长度的字符,如 return 由 Length() 函数编辑。
因此,要替换字符串中的子字符串,一种方法是
求子串在字符串中的位置。你可以使用 TP 的 Pos() 函数。
如果 Pos() 找到子串,它将 return 一个正整数,否则为 0。我们称 return 值 P.
如果 P 大于零,您可以使用 TP 的 Delete() 过程从指定位置开始从字符串中删除指定数量的字符。因此,您可以在字符串上调用 Delete,将 P 作为起始位置并传递 Length(SubString) 作为要删除的字符数。
然后你可以使用TP的Insert过程插入替换子串,从P开始,找到原始子串的位置。
以上步骤用于将任意长度的子字符串替换为另一个长度可能不同甚至为空的子字符串(在这种情况下,只需省略 Insert() 调用。在这种情况下想要将字符串中的一个字符一对一地替换为另一个字符,您可以通过直接赋值来完成,如
S[2] := S[1];
所以 S 变成 'HHllo World'
或
S[1] := 'A';
正如标题中所说,我正在为学校编写一个非常简单的使用 turbo pascal 的编码和解码程序,但我无法找到替换字符串中某些字符的解决方案。
感谢帮助
因为这是家庭作业,我不会给你代码来完成它,而是解释如何使用 TP 的字符串处理工具来完成它。我已经安装了 TP 的工作副本很多年了,但从记忆中:
关于 TP 中字符串的关键是它可以用最大长度 255 声明,并且实际上是这些字符的数组(编号 1.. max),前面有一个 "length" 字节,它指示字符串中的当前字符数。
所以,如果你有这个声明
var S : String[20];
你可以做这样的作业
S := 'Hello World';
并且您可以访问单个字符
S[1]
其值为'H',
S[2]
即 'e' 等。永远不要假设任何超出字符串当前长度的字符,如 return 由 Length() 函数编辑。
因此,要替换字符串中的子字符串,一种方法是
求子串在字符串中的位置。你可以使用 TP 的 Pos() 函数。
如果 Pos() 找到子串,它将 return 一个正整数,否则为 0。我们称 return 值 P.
如果 P 大于零,您可以使用 TP 的 Delete() 过程从指定位置开始从字符串中删除指定数量的字符。因此,您可以在字符串上调用 Delete,将 P 作为起始位置并传递 Length(SubString) 作为要删除的字符数。
然后你可以使用TP的Insert过程插入替换子串,从P开始,找到原始子串的位置。
以上步骤用于将任意长度的子字符串替换为另一个长度可能不同甚至为空的子字符串(在这种情况下,只需省略 Insert() 调用。在这种情况下想要将字符串中的一个字符一对一地替换为另一个字符,您可以通过直接赋值来完成,如
S[2] := S[1];
所以 S 变成 'HHllo World'
或
S[1] := 'A';