比较 Fortran 中的两个字符串
Comparing two strings in Fortran
根据字母顺序比较 abc
和 bcd
两个字符串的正确方法是什么?是否有内置命令可以这样做?还是 >
或 .lt.
可以毫无问题地完成这项工作?
内在关系运算符 .lt.
和 <
(以及 "equal" 和 "greater than" 朋友)确实可以用来比较字符变量。
我们看定义(Fortran 2018, 10.1.5.5.1):
the character operand x1 is considered to be less than x2 if the character value of x1 at this position precedes the value of x2 in the collating sequence
其中比较是对相应字符串中不同的第一个字符部分进行的。
排序顺序 告诉您 'a'
是否在 'b'
之前。因此,如果 'abc'
与 'bcd'
进行比较,则比较在 'a'
和 'b'
之间。
如果要比较的两个字符串的长度不同,则比较时将较短的字符串在右侧用空格(空格)填充,使其与较长的字符串长度相同。这意味着在比较 'ab'
和 'abc'
时,我们会查看 'ab '
和 'abc'
: 'ab'<'abc'
当且仅当 ' '<'c'
.
根据字母顺序比较 abc
和 bcd
两个字符串的正确方法是什么?是否有内置命令可以这样做?还是 >
或 .lt.
可以毫无问题地完成这项工作?
内在关系运算符 .lt.
和 <
(以及 "equal" 和 "greater than" 朋友)确实可以用来比较字符变量。
我们看定义(Fortran 2018, 10.1.5.5.1):
the character operand x1 is considered to be less than x2 if the character value of x1 at this position precedes the value of x2 in the collating sequence
其中比较是对相应字符串中不同的第一个字符部分进行的。
排序顺序 告诉您 'a'
是否在 'b'
之前。因此,如果 'abc'
与 'bcd'
进行比较,则比较在 'a'
和 'b'
之间。
如果要比较的两个字符串的长度不同,则比较时将较短的字符串在右侧用空格(空格)填充,使其与较长的字符串长度相同。这意味着在比较 'ab'
和 'abc'
时,我们会查看 'ab '
和 'abc'
: 'ab'<'abc'
当且仅当 ' '<'c'
.