处理英文单词换行显示

原创 2007年09月19日 13:54:00

     在smartforms实际使用中经常会遇到换行的情况,如果是中文,那还好办,如果是英文,就经常会出现英文单词分两行显示的情况,因此,我自己写了个处理function,能够纠正这种错误,如果要换行,之前会用空格补足位数。

FUNCTION zsplittext.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(FIXLENGTH) TYPE  I
*"  CHANGING
*"     REFERENCE(ORITEXT) TYPE  STRING
*"----------------------------------------------------------------------

*"AS,DFG HJKL,ASDFJ,SDKF22
*"----------------------------------------------------------------------

  DATA: tmp_text TYPE string,
        char,
        tmp_text1 TYPE string,
        tmp_sub_t TYPE string,
        sub_t TYPE string.
  DATA: textlength TYPE i,
        f_length TYPE i,
*        comm_n TYPE i,
        t_length1 TYPE i,"累加字符串长度
        t_length2 TYPE i,
        t_length3 TYPE i,
        t_rown TYPE i,"
        space_length TYPE i,
        sub_text_len TYPE i.
  DATA: dt_subt1 TYPE TABLE OF string,
        dt_subt2 TYPE TABLE OF string.
  TYPES: BEGIN OF s_subt,
        sub_text TYPE string,
        splitsign(5) TYPE c,
        END OF s_subt.
  DATA: dt_subtext TYPE TABLE OF s_subt WITH HEADER LINE.
  DATA: l_tabix LIKE sy-tabix.

  textlength = STRLEN( oritext ).
  IF textlength > fixlength.
*    comm_n = fixlength - 1.
*    tmp_text = oritext+comm_n(3).
    char = oritext+fixlength(1).
    IF char <> ' ' AND char <> ',' AND char <> '.'.
      SPLIT oritext AT ',' INTO TABLE dt_subt1."先用,分割
*      IF sy-subrc <> 0.
*        APPEND oritext TO dt_subt1.
*      ENDIF.
      LOOP AT dt_subt1 INTO sub_t.
        l_tabix = sy-tabix.
        tmp_sub_t = sub_t.
        CONDENSE tmp_sub_t NO-GAPS.
        IF STRLEN( tmp_sub_t ) < STRLEN( sub_t ).
          SPLIT sub_t AT space INTO TABLE dt_subt2."再用空格分割

          LOOP AT dt_subt2 INTO sub_t.
            dt_subtext-sub_text = sub_t.
            IF sy-tabix = 1.
              dt_subtext-splitsign = ','.
            ELSE.
              dt_subtext-splitsign = 'space'.
            ENDIF.
            APPEND dt_subtext.
          ENDLOOP.
        ELSE.
          dt_subtext-sub_text = sub_t.
          IF l_tabix <> 1.
            dt_subtext-splitsign = ','.
          ENDIF.
          APPEND dt_subtext.
        ENDIF.
      ENDLOOP.

      CLEAR tmp_text.
      LOOP AT dt_subtext.
        t_length1 = STRLEN( tmp_text ).
        t_length3 = t_length1 - t_rown * fixlength.
        sub_text_len = STRLEN( dt_subtext-sub_text ).
        IF t_length1 = 0.
          tmp_text = dt_subtext-sub_text.
        ELSE.
          IF t_length3 < fixlength.
            IF dt_subtext-splitsign = ','.
              CONCATENATE tmp_text dt_subtext-sub_text INTO tmp_text SEPARATED BY ','.
            ELSEIF dt_subtext-splitsign = 'space'.
              CONCATENATE tmp_text dt_subtext-sub_text INTO tmp_text SEPARATED BY space.
            ENDIF.
          ENDIF.

          t_length1 = STRLEN( tmp_text ).
          t_length3 = t_length1 - t_rown * fixlength.

          IF t_length3 = fixlength.
            IF dt_subtext-splitsign = ','.
              CONCATENATE tmp_text ',' INTO tmp_text.
              sub_text_len = sub_text_len + 1.
            ELSEIF dt_subtext-splitsign = 'space'.
              CONCATENATE tmp_text dt_subtext-sub_text INTO tmp_text SEPARATED BY space.
            ENDIF.
          ENDIF.

          t_length1 = STRLEN( tmp_text ).
          t_length3 = t_length1 - t_rown * fixlength.

          IF t_length3 > fixlength.
            t_rown = t_rown + 1.
            f_length = t_rown * fixlength - 1.
            tmp_text1 = tmp_text+f_length(1).

            IF tmp_text1 <> ' ' AND tmp_text1 <> ','.
*             计算需要几个空格来填充一行到末尾
              t_length2 = t_length1 - sub_text_len.
              space_length = fixlength - ( t_length3 - sub_text_len ).
*             先把最后加上的字符串去掉
              tmp_text = tmp_text+0(t_length2).
*             循环加空格
              DO space_length TIMES.
                CONCATENATE tmp_text '' INTO tmp_text SEPARATED BY space.
              ENDDO.
              CONCATENATE tmp_text dt_subtext-sub_text INTO tmp_text.
            ELSE.
              CONCATENATE tmp_text dt_subtext-sub_text INTO tmp_text SEPARATED BY space.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDLOOP.
      oritext = tmp_text.
    ENDIF.
  ENDIF.
ENDFUNCTION.

给NGUI 提供支持英文单词换行功能

NGUI 的原始版本是不支持英文单词换行的,他的判断是针对一个一个字符的。但是现在我们游戏有这个需求,就是当换行的位置是一个单词的时候,就把这个单词放到下一行显示。如下: **修改前:this is...
  • pdw_jsp
  • pdw_jsp
  • 2015年09月07日 15:29
  • 1434

css强制html不换行 css强制英文单词断行

css强制html不换行 css强制英文单词断行 强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word...
  • Doris_sun
  • Doris_sun
  • 2017年04月17日 10:44
  • 1326

Objective-C文字换行方式(解决英文在行末时的换行问题)

我们在做文字信息展示的时候会遇到这种情况:中文+英文(数字),当英文或者数字在行末并且过长的时候,这种情况下系统会默认把整个英文换到下一行展示。这样就会造成上一行显示不满的情况。 如果是UILabe...
  • liu1347508335
  • liu1347508335
  • 2016年08月10日 14:47
  • 3333

Android TextView中标点符号或英文导致自动换行问题

Android的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,比如:原因: 1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好...
  • ggsmite
  • ggsmite
  • 2016年07月23日 01:20
  • 577

单词太长导致自动换行,出现空白区域。——word-wrap和word-break(英文单词换行)

写在前面:在写页面的时候,偶尔有时会遇到下图这两种情况,一种是单词过长时会溢出div,一种是直接换行,导致出现空白区域。这两个情景就需要word-wrap、word-break这两个属性出场来解决了。...
  • OBKoro1
  • OBKoro1
  • 2017年04月18日 20:11
  • 802

安卓TextView文本不满一行由于英文,标点符号等原因换行

1、 String aaa = “随便复制一段文字,用于测试,大家自己写下。有特殊符号,然后标点,英文什么的。” 2、 转半角函数,因为实际看起来半角函数比较好看 public stati...
  • huwan12345
  • huwan12345
  • 2017年05月19日 00:51
  • 1130

word中设置英文单词按字符换行

 问题: 在word中输入比较长的英文单词,如果单词超过了行尾,则会自动换行,这样就形成了上一行剩下的字数很少,如果是两段对齐,则字符间距会变大;如果左对齐,则会出现右边空出一大行。 ...
  • haelang
  • haelang
  • 2014年09月20日 22:12
  • 1499

CSS英文单词强制换行

一个是word-break:break-all,(一个是word-wrap:break-word,)表格中的文字则还有一个是table标签的table-layout:fixed样式。 table...
  • qwertlijia
  • qwertlijia
  • 2014年04月08日 16:41
  • 543

textview数字英文在一起时自动换行

public class StartCustomTextView extends TextView { private Context context; /** * 用于测量字符宽度 */...
  • dany1202
  • dany1202
  • 2015年05月19日 18:54
  • 4401

word西文换行,末尾添加小横线方法(连字符)

将西文单词从自动换行的位置处断开,某位添加一个小横线(连字符)。一般来说,许多人为了美观排版常常将段落的对齐方式设置为两端对齐方式,此时要是在某行的结尾有一个词特别长,而在这一行中显示不下的话,Wor...
  • huangshanchun
  • huangshanchun
  • 2015年03月16日 20:31
  • 5261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:处理英文单词换行显示
举报原因:
原因补充:

(最多只允许输入30个字)