删除存在于 2 个字符之间的特殊字符
Remove a special character that exists between 2 characters
我有以下字符串:
6103951001#136,00#S0#0#99999999#8000010000#10.12.2019#
2019 年 10 月 31 日#"MATZOURAKIS IOANNISMROA118#OSPh"#99470##APE A 54226#K
我想要的是删除之间的特殊字符 HORIZONTAL_TAB(#) 这是字符串的一部分:"MATZOURAKIS IOANNISMROA118#OSPh"
我该怎么办?
谢谢
PS。我正在使用以下内容从制表符分隔的文本文件上传数据
数据:data_table 类型标准 table of char255,
wa_data_table like line of data_table.
lv_file = p_file.
cl_gui_frontend_services=>gui_upload(
exporting
filename = lv_file
filetype = 'ASC'
changing
data_tab = data_table
现在我正在执行以下操作以解决问题
loop at data_table into wa_data_table.
find all occurrences of '"' in wa_data_table match count lv_count.
if sy-subrc = 0 and lv_count = 2.
* REPLACE ALL OCCURRENCES OF REGEX
* '(#(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))' IN wa_data_table WITH ' '.
split wa_data_table at '"'
into split_data1 split_data2 split_data3.
replace all occurrences of cl_abap_char_utilities=>horizontal_tab
in split_data2 with ' '.
concatenate split_data1 split_data2 split_data3
into wa_data_table.
endif.
endloop.
我认为我们必须用另一种方式处理 cl_abap_char_utilities=>horizontal_tab 而不是字符 #。
您可以在 ABAP 中使用以下方法找到这个字符并替换它:
data : lv_test type string VALUE '6103951001#136,00#S0#0#99999999#8000010000#10.12.2019# 31.10.2019#"MATZOURAKIS IOANNISMROA118#OSPh"#99470##APE A 54226#K'.
REPLACE ALL OCCURRENCES OF REGEX '(#(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))' IN lv_test WITH ''.
write lv_test.
这是此问题的正确解决方案。
replace all occurrences of regex
'(\t(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))'
in table data_table with ' '.
replace all occurrences of regex '["]' in table data_table with ''.
我有以下字符串:
6103951001#136,00#S0#0#99999999#8000010000#10.12.2019#
2019 年 10 月 31 日#"MATZOURAKIS IOANNISMROA118#OSPh"#99470##APE A 54226#K
我想要的是删除之间的特殊字符 HORIZONTAL_TAB(#) 这是字符串的一部分:"MATZOURAKIS IOANNISMROA118#OSPh"
我该怎么办?
谢谢
PS。我正在使用以下内容从制表符分隔的文本文件上传数据 数据:data_table 类型标准 table of char255,
wa_data_table like line of data_table.
lv_file = p_file.
cl_gui_frontend_services=>gui_upload(
exporting
filename = lv_file
filetype = 'ASC'
changing
data_tab = data_table
现在我正在执行以下操作以解决问题
loop at data_table into wa_data_table.
find all occurrences of '"' in wa_data_table match count lv_count.
if sy-subrc = 0 and lv_count = 2.
* REPLACE ALL OCCURRENCES OF REGEX
* '(#(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))' IN wa_data_table WITH ' '.
split wa_data_table at '"'
into split_data1 split_data2 split_data3.
replace all occurrences of cl_abap_char_utilities=>horizontal_tab
in split_data2 with ' '.
concatenate split_data1 split_data2 split_data3
into wa_data_table.
endif.
endloop.
我认为我们必须用另一种方式处理 cl_abap_char_utilities=>horizontal_tab 而不是字符 #。
您可以在 ABAP 中使用以下方法找到这个字符并替换它:
data : lv_test type string VALUE '6103951001#136,00#S0#0#99999999#8000010000#10.12.2019# 31.10.2019#"MATZOURAKIS IOANNISMROA118#OSPh"#99470##APE A 54226#K'.
REPLACE ALL OCCURRENCES OF REGEX '(#(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))' IN lv_test WITH ''.
write lv_test.
这是此问题的正确解决方案。
replace all occurrences of regex
'(\t(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$))'
in table data_table with ' '.
replace all occurrences of regex '["]' in table data_table with ''.