字串操作

2021-08-10 08:45:48 字數 3256 閱讀 9236

1).shift:截斷字串

2).replace:替換字串

3). translate:轉換字串

4). search:查詢字串

5).condense:去掉字串中的空格

6).split:拆分字串

7).concatenate:連線字串

8) .移動字段內容

9).轉換為可排序格式

10).覆蓋字元字段

11).獲得字串長度

12).分配字串部分

1).shift:截斷字串

shift [by places] .:

作用:去掉字串的前n個位置的字元,如果n未指定,預設為1,如果指定的n小於等於0,則字串不變。如果n超出字串的長度,則字串變空,所以在做 此操作的時候要注意n的指定。可以首先獲得該字串的長度,方法:len=strlen(c)。

mode:指定字串截斷的方向。

left:從左邊截斷

right:從右邊截斷

circular:把左邊的字元放到右邊。

shift up to .:

作用:把字串中在str以前的字元都去掉,同樣可以指定mode,原理同上。

shift left deleting leading .

shift right deleting trailing .:

作用:這兩個語句就是把字串c中前的(left)或者後的(right)的字元str都去掉。

以上語句常用的場合:

a.去掉字串中的前導字元。例如:如果alv中定一了乙個欄位是10位的字元,裡面放的是so,po等number,而你不想顯示前面的0,那麼就可以這樣做:shift left deleting leading 0.

b.已知某個字串中包含固定的字元,想把這個固定字元前面的字元刪掉,那麼可以使用:shift up to 。例如:某個物料,通過增強mga00002和mga00003對其加了字首,這個字首部分是在某固定值表中取得的資料,在具體顯示中,要把其 字首去掉。如te-mrp-mat1中想把te去掉,mrp表示該物料是跑mrp的,需求要求把te-去掉,mrp可以在固定值表中取得,則可以使用 shift up to 'mrp'.

2).replace:替換字串

replace with into [length ].:

作用:把字串c中的str1替換成str2,如果指定l,就是指定了替換的長度。如果替換成功,則sy-subrc設定成0。

常用場合:

字串的替換操作比較常用,需要注意的是l的指定長度。

3). translate:轉換字串

translate to upper case.

translate to lower case.:

作用:字串的大小寫的轉換

translate using . :

作用:根據規則r轉換字串c

常用場合:

sap系統一般都是使用大寫字母的,但是某些特定的字段卻是用小寫字母來標記的,在操作這些欄位的時候就需要注意大小寫的轉換了。轉換規則倒是不太常用,到現在我還沒有遇到過。

4). search:查詢字串

search for .:

作用:在字串c中查詢str,如果找到了,sy-subrc為0,sy-fdpos為找到字串的具體位置。

需要說明的地方:注意模式的使用

指定str:查詢str,str中後面的空格忽略

指定.str.:查詢str,包含了str中尾部的空格

指定*str:查詢以str結尾的字串

指定str*:查詢以str開頭的字串

的指定:

主要用到的就是:starting at 指定開始位置

ending at 指定結束位置

常用場合:

一般用來判斷某個字串是否符合條件。也可以結合其他語句對字串進行操作。

5).condense:去掉字串中的空格

condense [no-gaps].:

作用:去掉字串中的前面和後面的空格,如果指定no-gaps,則去掉字串中的所有空格。

常用場合:獲得字串的精確長度,用於判斷。

6).split:拆分字串

split at into ... .

作用:按照分割字元del把字串c分割成c1…cn。

split at into table .

作用:按照分割字元del把c分割,然後放到內錶中的相應字段

常用場合:

檔名的分割,根據完整的檔案路徑加檔名把檔名分割出來。

難點:無法確定要分割多少次.

解決方法:兩兩分割,到最後的那個就是了。例如:str=c:"dir1"dir2"dir3"file

split str at '"' into str1 str2.

find str2 for '/'.

check sy-subrc = 0.

do.find str2 for '/'.

if sy-subrc = 0.

split str2 into str1 str2.

else.

exit.

endif.

enddo.

檔案上傳的型別是字串,把其分割後放到內錶中。例如上面的問題:

data: begin of itab occurs 0 ,

col1(30) type c,

end of itab.

split str at '"' into table itab.

describe table itab lines line.

read table itab index line.

itab-col1就是file

7).concatenate:連線字串

concatenate ... into [separated by ].

作用:把c1…cn用s分隔連線到c中

8).shift [by places] .

按照給定位置數移動字串

該語句將字段 移動 個位置。如果省略 by places, 則將解釋為乙個位置。如果是 0 或負值,則保持不變。如果超過長度,則用空格填充 。可為變數。

對不同() 選項,可以按以下方式移動字段 :a.left:向左移動 位置,右邊用個空格填充(預設設定 )。b.right:向右移動位置,左邊用個空格填充 。c.circular:向左移動 位置,以便左邊 個字元出現在右邊。

移動欄位串到給定串

shift up to .

字串操作 靠字串分割字串

字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...

字串操作

字串操作 要了解字串操作首先要了解什麼是字串。前面已經提過,字串是乙個由零個或者多個字元組成的有限序列,既然是有限的那麼也就意味著字串存在乙個起始位置和乙個結束位置。我們以指定起始位置的方式來通知程式從該位置起向後的一段記憶體空間的內容應該解釋為字串。那麼這個字串在什麼地方結束呢?規定當遇到字元 0...

字串操作

include using namespace std int strlength char str char strcopy char str1,char str2 char strlink char str1,char str2 int main char strcopy char str1,c...