如何在SAP NetWeaver 7.5中替换或删除字符串中的双哈希(##)
解决SAP NetWeaver 7.5中替换字符串双哈希(##)为空格的问题
针对你遇到的替换字符串中##为空格的需求,以下是可行的解决方案:
正确的ABAP替换语句
确保你的字符串变量为STRING类型(而非固定长度的C/N类型,固定长度类型可能因长度限制导致替换效果不明显),使用标准REPLACE语句即可完成替换:
DATA(lv_target_string) = `Hello, my name is Bobby.##I really like Stackoverflow, but I don't like new lines in my string.##Best regard Bobby.`. REPLACE ALL OCCURRENCES OF '##' IN lv_target_string WITH ' '.
如果你的原始变量是固定长度类型(如C),建议先转换为STRING类型处理,再按需转回原类型:
DATA(lv_c_var) = `Hello, my name is Bobby.##I really like Stackoverflow, but I don't like new lines in my string.##Best regard Bobby.`. DATA(lv_string_var) = CONV string( lv_c_var ). REPLACE ALL OCCURRENCES OF '##' IN lv_string_var WITH ' '. lv_c_var = CONV c( lv_string_var ). " 转回C类型(若需保留原变量类型)
解释你之前方法无效的原因
TRANSLATE string USING '##':该函数用于单字符的映射替换(需成对定义替换规则,如TRANSLATE str USING 'ABab'是把A换成a、B换成b),无法处理多字符序列的替换,因此无效。SF_SPECIALCHAR_DELETE:此函数本身设计就有40字符的长度限制,不适合处理长字符串,因此无法满足需求。- 若之前的
REPLACE语句无效,大概率是因为你的变量是固定长度类型,替换后的内容因长度限制被截断,导致看不到效果。
内容的提问来源于stack exchange,提问作者user16365685
相关产品推荐
相关产品推荐

