makefile 學習筆記 --- 字符串處理

1, $(subst < from>, < to>, < text>)

名稱: 字符串替換函數 subst

功能: 把字符串< text>中的< from>字符串替換成< to>

返回: 被替換後的字符串
eg:

 $(subst ee, EE, feet on the street)

把"feet on the street" 中的"ee" 替換成 “EE”,返回的結果爲 “fEEt on the street”

2, $(pathsubst < pattern>, < replacement>, < text>)

名稱: 模式字符串替換函數 pathsubst

功能: 查找< text>中的單詞(單詞以“空格”、“TAB”、“回車”、“換行”分隔)是否符合模式< pattern>,如果匹配的話,則以< replacement>替換。這裏,< pattern>可以包括通配符“%”,表示任意長度的字串。如果< replacement>中也包含“%”,那麼,< replacement>中的這個“%”將時< pattern>中的那個“%”所代表的字串。(可以用"“來轉義,以”%“來表示真實含義的”%"字符)。

返回:被替換後的字符串

eg:

$(pathsubst %.c, %.o, x.c.c bar.c)

把字符串“x.c.c bar.c”符合模式[%.c]的單詞替換成[%.o], 返回結果爲"x.c.o bar.o"

3,$(strip < string>)

名稱: 去空格函數 strip

功能: 去掉< string> 字符串中開頭和結尾的空字符

返回: 去掉空格後的字符串

eg:

$(strip  a b c )

把字符串“a b c ”去掉開頭和結尾的空格,結果是"a b c"

4, $(findstring < find>, < in>)

名稱: 查找字符串函數 findstring

功能: 在字符串< in>中查找< find>字串

返回: 如果找到,那麼返回< find>, 否則返回空字符串

eg:

$(findstring a,  a b c)    返回字符串"a"

$(findstring a, b c) 返回字符串""(空字符串)

5,$(filter < pattern…>, < text>)

名稱: 過濾函數 filter

功能: 以< pattern>模式過濾< text>字符串中的單詞,保留符合模式< pattern>的單詞,可以有多個模式

返回: 符合模式< pattern>的字串

eg:

sources := foo.c  bar.c  baz.s  ugh.h
foo:  $(sources)
cc $(filter %.c %.s,  $(sources)) -o foo

$(filter %.c %.s, $(sources))的返回值爲"foo.c bar.c baz.s"

6,$(filter-out < pattern… >, < text>)

名稱: 反過濾函數 filter-out

功能: 以< pattern>模式過濾< text>字符串中的單詞,去除符合< pattern>模式的單詞,可以有多個模式

返回: 不符合模式< pattern>的字符串

eg:

objects =  main1.o  foo.o  main2.o bar.o
mains = main1.o  main2.o
$(filter-out $(mains), $(objects)) 

返回值是 “foo.o bar.o”

7,$(sort < list>)

名稱: 排序函數 sort

功能: 給字符串< list>中的單詞排序(升序)

返回: 排序後的字符串

eg:

$(sort  foo bar lose)

返回 “bar foo lose”
備註: sort函數會去掉< list>中相同的單詞

8, $(word < n>, < text>)

名稱: 去單詞函數 word

功能: 取字符串< text>中第< n>個單詞(從1開始)

返回: 字符串< text>中的第< n>個單詞,如果n大於字符串中單詞數,那麼返回空字符串

eg:

 $(word 2,  foo  bar baz)  

返回“bar”

9,$(worelist < s>, < e>, < text>)

名稱: 取單詞串函數 wordlist

功能: 從字符串 < text>中取從< s>開始到< e>的單詞串。< s>和< e>是一個數字。

返回: 字符串< text>中從< s>開始到< e>的單詞字串。如果< s>比< text>中的單詞數要大,那麼返回空字符串。如果< e>大於< text>中的單詞數,那麼返回從< s>開始,到結尾的字符串

eg:

$(wordlist 2 , 3,  foo bar baz)  

返回值爲 “bar baz”

10, $(words < text>)

名稱: 單詞個數統計 words

功能: 統計< text>字符串中單詞個數

返回: < text>中的單詞個數

eg:

$(words ,foo bar baz)  

返回值是3

11, $(firstword < text>)

名稱: 首單詞函數 firstword

功能: 取字符串< text>中的第一個單詞

返回: 字符串< text>中的第一個單詞

eg:

$(fristword  foo bar) 

返回值是 "foo”

備註: 等價於 $(word 1, < text>)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章