关于文本字段的智能拆分器的任何想法

2020-09-02 18:06发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个不寻常的问题,我希望有人...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个不寻常的问题,我希望有人对此有所想法,我有五个每个60个字符文本的旧字段,我需要迁移到每个每个30个字符的11个字段。 我们遇到的问题是,我们有几个实例,其中第30个字符位于单词的中间,因此SAP中的输出看起来像是...。

" Quick brown fox跳过了la

zy狗,这碗菜和s

poon"

有没有人想出一个"智能拆分器",该拆分器将在第30个字符之前的文本字段的最后一个空格处拆分这些列,但在此之后又调整其他文本行? 意思是,如果代码在文本字段1中的第26个字符处拆分,则文本字段2将需要在第27个字符处拾取,然后在其达到最大30个字符之前寻找一个空格,这适用于2万条记录,而我 卡住了。

1条回答
Doze时光
2020-09-02 18:59

我有一个函数,可以在句子中的单词之间插入空格,这样您就可以将它分成偶数块,而不必将单词分成两半。

使用3个参数调用它:<您的串联输入>,30、330

在串联输入时,请确保在每列之间插入空格。 然后将结果分成11个30个字符的字段。

#在句子中的单词之间插入多余的空格
 #以便可以将输入分为相同长度的字段
 #一言不发
 #
 #如果单词长于字段长度,则返回null
 #
 #个参数
 #$输入varchar(1024)
 #$ FieldLength int
 #$ TotalLength int
 #局部变量
 #$ Blanks varchar(1024)-空白字符串
 #$第一个varchar(1)
 #$最后一个varchar(1)
 #$ FirstPos int
 #$ LastPos int
 #$ Output int


 $ Blanks ='';
 $ FirstPos = 1;
 while($ FirstPos <$ Fieldlength)
     开始
     $空白= $空白||  '';
 $ FirstPos = $ FirstPos + 1;
     结束
 $ LastPos = $ FieldLength;
 $ FirstPos = $ FieldLength + 1;
 $输出= $输入;


 而(substr($ Output,$ LastPos,$ TotalLength)<>'')
     开始
     $ Last = substr($ Output,$ LastPos,1);
     $ First = substr($ Output,$ FirstPos,1);
     while($ Last <>''和$ First <>'')
 开始
 $ LastPos = $ LastPos-1;
 如果($ LastPos <$ Firstpos-$ FieldLength)返回null;
 $ Last = substr($ Output,$ LastPos,1);
 结束
     如果($ First ='')
 $ Output = substr($ Output,1,$ LastPos)||  (substr($ Output,$ FirstPos + 1,1024));
 其他
 $ Output = substr($ Output,1,$ LastPos-1)||  substr($ Blanks,1,$ FirstPos-$ LastPos)||  ltrim_blanks(substr($ Output,$ LastPos + 1,1024));
     $ FirstPos = $ FirstPos + $ FieldLength;
 $ LastPos = $ FirstPos-1;
 结束


 返回$ Output;


 #return replace_substr($ Output,'','。');
 

一周热门 更多>