如何删除字符文本中的space?

How to delete space in character text?

我写了一段代码,可以自动从系统中提取与时间相关的信息。如 table 所示,t247 月份名称的长度固定为 10 个字符。但是显示在报告屏幕上是一个糟糕的图像。

我这样打印:

  WRITE : 'Bugün', t_month_names-ltx, ' ayının'.
  CONCATENATE gv_words-word '''nci günü' INTO date.
  CONCATENATE date ',' INTO date.
  CONCATENATE date gv_year INTO date SEPARATED BY space.
  TRANSLATE   date TO LOWER CASE.

我试过CONDENSE t_month_names-ltx NO-GAPS.的方法删除空格,还是不行

WRITE后,我可以通过设置空白值静态写入:

  WRITE : 'Bugün', t_month_names-ltx.
  WRITE : 14 'ayının'.
  CONCATENATE gv_words-word '''nci günü' INTO date.
  CONCATENATE date ',' INTO date.
  CONCATENATE date gv_year INTO date SEPARATED BY space.
  TRANSLATE   date TO LOWER CASE.

但这不是正确的用法。我如何动态地实现这一目标?

您可以使用字符串类型的临时字段:

DATA l_month TYPE STRING.

l_month = t_month_names-ltx.

WRITE : 'Bugün', l_month.
WRITE : 14 'ayının'.
CONCATENATE gv_words-word '''nci günü' INTO date.
CONCATENATE date ',' INTO date.
CONCATENATE date gv_year INTO date SEPARATED BY space.
TRANSLATE   date TO LOWER CASE.

您不能从 TYPE C 字段中删除尾随 space,因为它的长度是固定的。未使用的长度总是用spaces.

填充

但是在你组装你的字符串之后,你可以使用 CONDENSE 没有 NO-GAPS 来删除字符串中超过一个 space 的任何链。

在你写的代码下面添加CONDENSE date.,你应该会得到你想要的结果。

另一种选择是放弃 CONCATENATE 并使用 string templates| 符号内的字符串文字)代替字符串汇编,它没有包含尾随 [= 的恼人习惯27=] 类型 C 字段:

DATA long_char TYPE C LENGTH 128.
long_char = 'long character field'.

WRITE |this is a { long_char } inserted without spaces|.

输出:

this is a long character field inserted without spaces