abap 中文字符串提取和字节长度计算 (两种方法)
来源:互联网 发布:数据库中substring 编辑:程序博客网 时间:2024/05/17 04:24
abap 中对于字符串长度的计算一般用 strlen 函数实现。但此函数只能算出字符的个数无法计算字符串的长度,例如 'ABC你好'用此函数计算得到的值为5,显然它不是我们想要的,它的字节长度为7 。
经过研究,我写了一个函数可以实现功能代码如下:
FUNCTION YGET_CNCHAR_CHARLE.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(STRING) TYPE STRING 传入字符串
*" EXPORTING
*" REFERENCE(STR) TYPE STRING 返回字符串
*" REFERENCE(CHARLEN) TYPE I 返回长度
*"----------------------------------------------------------------------
DATA: w_uccp TYPE i,
w_temp(2) TYPE c,
w_left(100) TYPE c,
w_len(10) TYPE c,
s_len TYPE i
.
w_left = string.
DATA : BEGIN OF line,
text TYPE c,
END OF line,
itab LIKE TABLE OF line WITH HEADER LINE.
*DATA str TYPE string.
DO.
CALL FUNCTION 'TEXT_SPLIT'
EXPORTING
length = 2
text = w_left
IMPORTING
line = w_temp
rest = w_left.
CALL METHOD cl_abap_conv_out_ce=>uccpi
EXPORTING
char = w_temp
RECEIVING
uccp = w_uccp.
w_len = STRLEN( w_temp ).
* WRITE: /1 w_temp,
* 10 w_uccp,
* 25 w_len.
IF w_uccp > 256.
CONCATENATE str w_temp INTO str.
ENDIF.
IF w_left IS INITIAL OR sy-index > 100.
EXIT.
ENDIF.
ENDDO.
IF str IS NOT INITIAL.
DATA:t_len TYPE i.
clear : s_len,charlen.
t_len = STRLEN( string ).
s_len = STRLEN( str ).
t_len = t_len - s_len .
s_len = s_len * 2 .
charlen = t_len + s_len.
* WRITE :/,'CHARLEN=' ,charlen, 'STR= ',str.
ENDIF.
ENDFUNCTION.
"""""""""方法2
DATA: lv_str TYPE string,
lv_len TYPE i.
lv_str = 'AB中国'.
lv_len = cl_abap_list_utilities=>dynamic_output_length( lv_str ).
WRITE lv_len.
- abap 中文字符串提取和字节长度计算 (两种方法)
- abap 中文字符串提取和字节长度计算
- ABAP取中文字符串的字节长度
- PHP判断中文字符串的长度和字节长度
- PHP判断中文字符串的长度和字节长度
- PHP判断中文字符串的长度和字节长度
- lua中文字符串长度计算和截取
- 计算中文字符串长度
- ABAP 提取或去除字符串中的中文字符(双字节字符)
- ABAP 提取或去除字符串中的中文字符(双字节字符)
- ABAP 提取或去除字符串中的中文字符(双字节字符)
- ABAP 提取或去除字符串中的中文字符(双字节字符)
- 在 Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在 Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 详述Linux ftp命令的使用方法
- uva 10790 How Many Points of Intersection?
- listctrl改为排序的实现
- 快速排序的非递归实现
- 久坐不动长期使用电脑会带来哪些健康隐患及预防措施
- abap 中文字符串提取和字节长度计算 (两种方法)
- 多线程
- 服务器环境
- java反射及应用
- 分治法排序
- paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..
- Hibernate继承映射的简单示例
- android应用中获取文件名的两个方法
- Html5学习笔记 2 selectors api