PL/I 语言 字符串处理基础 长度 / 拼接 / 截取

PL/I阿木 发布于 2025-06-06 7 次阅读


PL/I 语言字符串处理基础教程

PL/I(Programming Language One)是一种高级程序设计语言,它结合了多种编程语言的特性,旨在提供一种通用、高效的编程环境。在PL/I中,字符串处理是一个基础且重要的功能,它涉及到字符串的长度计算、拼接以及截取等操作。本文将围绕这些基础操作,通过具体的代码示例,详细介绍PL/I语言中的字符串处理技术。

字符串长度计算

在PL/I中,可以使用内置函数`LENGTH`来计算字符串的长度。`LENGTH`函数接受一个字符串作为参数,并返回该字符串的长度(即字符数)。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-LENGTH.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 STRING-TO-TEST PIC X(20).
01 LENGTH-OF-STRING PIC 9(4).

PROCEDURE DIVISION.
MOVE 'Hello, World!' TO STRING-TO-TEST.
COMPUTE LENGTH-OF-STRING = LENGTH(STRING-TO-TEST).
DISPLAY 'Length of the string is: ' LENGTH-OF-STRING.

在上面的代码中,我们定义了一个长度为20的字符串`STRING-TO-TEST`,并将其初始化为`'Hello, World!'`。然后,我们使用`LENGTH`函数计算其长度,并将结果存储在`LENGTH-OF-STRING`变量中。我们输出字符串的长度。

字符串拼接

在PL/I中,可以使用内置函数`CONCAT`(或简写为`||`)来拼接两个或多个字符串。`CONCAT`函数将所有参数连接成一个单一的字符串。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-CONCATENATION.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 FIRST-STRING PIC X(10).
01 SECOND-STRING PIC X(10).
01 CONCATENATED-STRING PIC X(20).

PROCEDURE DIVISION.
MOVE 'Hello' TO FIRST-STRING.
MOVE 'World' TO SECOND-STRING.
COMPUTE CONCATENATED-STRING = CONCAT(FIRST-STRING, SECOND-STRING).
DISPLAY 'Concatenated string is: ' CONCATENATED-STRING.

在这个例子中,我们定义了两个长度为10的字符串`FIRST-STRING`和`SECOND-STRING`,分别初始化为`'Hello'`和`'World'`。然后,我们使用`CONCAT`函数将它们拼接成一个长度为20的字符串`CONCATENATED-STRING`,并输出结果。

字符串截取

在PL/I中,可以使用内置函数`SUBSTR`来截取字符串的一部分。`SUBSTR`函数接受三个参数:源字符串、起始位置和长度。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-SUBSTRING.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 FULL-STRING PIC X(20).
01 SUBSTRING-TO-EXTRACT PIC X(10).

PROCEDURE DIVISION.
MOVE 'This is a test string' TO FULL-STRING.
COMPUTE SUBSTRING-TO-EXTRACT = SUBSTR(FULL-STRING, 6, 10).
DISPLAY 'Extracted substring is: ' SUBSTRING-TO-EXTRACT.

在上面的代码中,我们定义了一个长度为20的字符串`FULL-STRING`,并将其初始化为`'This is a test string'`。我们使用`SUBSTR`函数从第6个字符开始截取长度为10的子字符串,并将结果存储在`SUBSTRING-TO-EXTRACT`变量中。我们输出截取的子字符串。

字符串替换

在PL/I中,可以使用内置函数`REPLACE`来替换字符串中的特定字符或子字符串。`REPLACE`函数接受四个参数:源字符串、要替换的子字符串、替换的子字符串和替换的位置。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-REPLACE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 FULL-STRING PIC X(30).
01 REPLACED-STRING PIC X(30).

PROCEDURE DIVISION.
MOVE 'Replace this word' TO FULL-STRING.
COMPUTE REPLACED-STRING = REPLACE(FULL-STRING, 'this', 'that', 1).
DISPLAY 'Replaced string is: ' REPLACED-STRING.

在这个例子中,我们使用`REPLACE`函数将`FULL-STRING`中的`'this'`替换为`'that'`。我们指定替换的位置为1,这意味着从字符串的第一个字符开始替换。

字符串搜索

在PL/I中,可以使用内置函数`INDEX`来搜索字符串中某个子字符串的位置。`INDEX`函数接受两个参数:源字符串和要搜索的子字符串。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-SEARCH.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 FULL-STRING PIC X(30).
01 SEARCH-STRING PIC X(10).
01 INDEX-OF-SEARCH PIC 9(4).

PROCEDURE DIVISION.
MOVE 'This is a test string' TO FULL-STRING.
MOVE 'test' TO SEARCH-STRING.
COMPUTE INDEX-OF-SEARCH = INDEX(FULL-STRING, SEARCH-STRING).
IF INDEX-OF-SEARCH NOT = 0
DISPLAY 'The string "' SEARCH-STRING '" is found at position ' INDEX-OF-SEARCH.
ELSE
DISPLAY 'The string "' SEARCH-STRING '" is not found in the string.'
END-IF.

在这个例子中,我们使用`INDEX`函数在`FULL-STRING`中搜索`SEARCH-STRING`的位置。如果找到了,我们输出找到的位置;如果没有找到,我们输出相应的消息。

总结

PL/I语言的字符串处理功能丰富,包括长度计算、拼接、截取、替换和搜索等操作。读者应该能够掌握这些基本操作,并在实际编程中灵活运用。随着对PL/I语言理解的深入,读者可以进一步探索更高级的字符串处理技术,为编程任务提供更多可能性。