共用方式為


X++ 字串執行階段函式

備註

社區興趣小組現在已從 Yammer 轉移到 Microsoft Viva Engage。 若要加入 Viva Engage 社群並參與最新的討論,請填寫 [ 要求存取財務和營運 Viva Engage 社群 表單 」 ,並選擇您要加入的社群。

本文說明字串執行階段函式。

火柴

在另一個字串中搜尋字串或運算式。

int match(str pattern, str text)

參數

參數 Description
模式 要搜尋的字串或運算式。
收發簡訊 要搜尋的字串。

返回值

1 如果圖案位於字符串中;否則為 0 (零)。

備註

搜尋不區分大小寫。 下列特殊字元可用來建立 模式 參數的模式。

  • \:反斜線 (\) 會取消或轉義特殊字元的特殊處理,以便特殊字元可以像一般字母一樣比對。 一對反斜線被翻譯成一個非特殊反斜線。 範例:

    • 匹配(“ab$cd”,“ab$cd”); 傳回 0
    • 匹配(“ab\$cd”,“ab$cd”); 傳回 0。 反斜線沒有逃逸。
    • 匹配(“ab\\$cd”,“ab$cd”); 傳回 1。 反斜線和美元符號會逸出。
  • < 或 ^:表達式開頭的左尖括號 (<) 或抑揚符 (^) 用於匹配行首。 範例:

    • match(“<abc”,“abcdef”); 傳回 1
    • match(“<abc”,“defabc”); 傳回 0
    • 匹配(“^abc”,“abcdef”); 傳回 1
    • 匹配(“^abc”,“defabc”); 傳回 0
  • > 或 $:運算式結尾的直角括號 (>) 或美元符號 ($) 用於比對行尾。 範例:

    • match(“abc>”,“abcdef”); 傳回 0
    • match(“abc>”,“defabc”); 傳回 1
  • ? 或。:問號 () 或句點 (.) 匹配相同位置的任何一個字符。 範例:

    • 匹配(“abc.def”,“abc#def”); 傳回 1
    • 匹配(“colou?r”,“colouXr”); 傳回 1
  • :x:冒號 () 指定要比對的字元群組,如緊接後面的字元所示。

  • :a:將匹配項設置為字母。 範例:

    • 匹配(“ab:acd”,“ab#cd”); 傳回 0
    • 匹配(“ab:acd”,“abxyzcd”); 傳回 0
    • 匹配(“ab:acd”,“abxcd”); 傳回 1
  • :d:將相符設定為數字字元。 範例:

    • 匹配(“ab:dcd”,“ab3cd”); 傳回 1
    • 匹配(“ab:dcd”,“ab123cd”); 傳回 0
    • 匹配(“ab:dcd”,“abcd”); 傳回 0
  • :n:將比對設定為英數字元。 範例:

    • match(“ab:ncd”,“ab%cd”); 傳回 0
    • 匹配(“ab:ncd”,“ab9cd”); 傳回 1
    • 匹配(“ab:ncd”,“abXcd”); 傳回 1
  • :SPACE:SPACE 是空格字元 (“ ”)。 將比對設定為空白、製表和控制字元 (例如 Enter (換行)。 範例:

    • 匹配(“ab:cd”,“ab cd”); 傳回 1
    • match(“ab: cd”,“ab\ncd”); 傳回 1
    • 匹配(“ab:cd”,“ab\tcd”); 傳回 1
    • 匹配(“ab:cd”,“ab cd”); 傳回 0。 只有第一個空格會比對。
  • *:後面接著星號 (“*”) 的運算式需要比對前一個運算式的零個、一個或多個出現項目。 範例:

    • 匹配(“abc*d”,“abd”); 傳回 1
    • 匹配(“abc*d”,“abcd”); 傳回 1
    • 匹配(“abc*d”,“abcccd”); 傳回 1
    • 匹配(“abc*d”,“abxd”); 傳回 0
  • +:後面接著加號 (+) 的運算式需要相符於前一個或多個運算式的出現項目。 範例:

    • 匹配(“abc+d”,“abd”); 傳回 0
    • 匹配(“abc+d”,“abcd”); 傳回 1
    • 匹配(“abc+d”,“abcccd”); 傳回 1
    • 匹配(“abc+d”,“abxd”); 傳回 0
  • -:後面接著減號 (-) 的運算式需要匹配前一個運算式的零個或一個出現。 換句話說,前面的運算式是選擇性的。 範例:

    • match(“colou-r”,“顏色”); 傳回 1
    • 匹配(“colou-r”,“顏色”); 傳回 1
  • []:將單一字元與括在括弧內的任何字元進行比對。 字元範圍可以由兩個以減號 (-) 分隔的字元指定。 例如, [a-z] 比對 a 和 z 之間的所有字母, [0-9] 比對數字, [0-9a-f] 比對十六進位數字。 範例:

    • 匹配(“[abc]”,“蘋果”); 傳回 1,因為它符合「蘋果」中的 a。
    • 匹配(“[abc]”,“獼猴桃”); 傳回 0,因為 “kiwi” 不包含 a、b 或 c。
    • 匹配(“gr[ae]y”,“灰色”); 傳回 1。 此運算式也與「灰色」相符。
    • 匹配(“gr[ae]y”,“graey”); 傳回 0,因為 “gr” 和 “y” 之間只有一個字元相符。
  • [^]:如果括弧括在括弧中的文字中第一個字元是抑揚符 (^),則運算式會符合括弧中括住的字元以外的所有字元。 範例:

    • 匹配(“[^bc]at”,“蝙蝠”); 傳回 0
    • 匹配(“[^bc]at”,“帽子”); 傳回 1
    • 匹配(“[^abc]”,“蝙蝠”); 傳回 1。 除了 a、b 或 c 之外的任何項目都會匹配。 因此,t 是匹配的。

斯特爾阿爾法

僅從字串複製英數字元。

str strAlpha(str _text)

參數

參數 Description
_簡訊 要從中複製的字串。

返回值

包含指定字串中所有英數字元的新字串。

備註

例如, strAlpha(“2+2=5 這是正確的嗎?”) 傳回字串 225isthiscorrect

Example

static void strAlphaExample(Args _arg)
{
    str s;
    ;
    s = strAlpha("?a*bc123.");
    print s;
    pause;
}

strCmp

比較兩個文字字串。

int strCmp(str text1, str text2)

參數

參數 Description
文1 第一個字串。
正文2 第二根字串。

返回值

如果兩個字串相同,則為 0,如果第一個字串排序較早,則為 1,如果第二個字串排序較早,則為 -1

備註

此方法執行的比較區分大小寫。

print strCmp("abc", "abc"); //Returns the value 0.
print strCmp("abc", "ABC"); //Returns the value 1.
print strCmp("aaa", "bbb"); //Returns the value -1.
print strCmp("ccc", "bbb"); //Returns the value 1.

strColSeq

將所有大寫字元轉換為小寫字元,並將所有有重音符號的字元轉換為對應的無重音小寫字元。

str strColSeq(str text)

參數

參數 Description
收發簡訊 要從中複製和轉換字元的字串。

返回值

轉換後的文字字串。

備註

strColSeq 函數的存在是為了向後相容性。 此功能僅支援下列西歐字元的對應:

  • AàáâãäÀÂÂÃÄBCçÇDEèéêëÈÉÊËFGHIìíîïÌÍÎÏJKLMNñÑOòóôõöpqrstuÙúûüÙÚÛÜVWXYýÝZæøåÆØÅ
  • aaaaaaabcccdeeeeeeeeeeeeefghiiijklmnnnoooooooooopqrstuuuuuwxyyyz~¦Ç~¦Ç~¦Ç

針對符合 Unicode 規範的功能,請透過 DLLDLLFunc 類別使用 Win32 LCMapString 應用程式設計介面 (API) 。

Example

下列範例會列印 abcdeabcde

    static void strColSeqExample(Args _arg)
    {
            ;
            print strColSeq("");
            pause;
    }

strDel

建立字串的複本,從中移除指定的子字串。

str strDel(str _text, int _position, int _number)

參數

參數 Description
_簡訊 要從中複製的字串。
_位 在複製作業期間開始忽略字元的位置。
_數 要忽略的字元數。 _number 參數前面的減號表示應將 _position 處字元之前的 _number-1 字元與_position處的字元一起移除。

返回值

從字串複製的其餘字元。

備註

strDel 函數是 substr 函數的補充。

strDel("ABCDEFGH",2,3); //Returns the string "AEFGH".
strDel("ABCDEFGH",4,3); //Returns the string "ABCGH".

strFind

在字串中搜尋其中一個指定字元的第一次出現。

int strFind(str _text, str _characters, int _position, int _number)

參數

參數 Description
_簡訊 要搜尋的字串。
_characters 要搜尋的字元。
_位 字串中開始搜尋的位置。
_數 一個帶正負號的數字,指出搜尋的方向,以及要在字串中搜尋的位置數目。

返回值

第一次出現其中一個指定字元的位置值,或找不到任何字元時為 0。

備註

若要從字串的開頭到結尾進行搜尋,請使用 1 作為 _position 參數的值。 如果 _number 參數的值為負數,系統會從指定位置向後搜尋字元數。 搜尋不區分大小寫。 以下是範例。

strFind("ABCDEFGHIJ","KHD",1,10); //Returns the value 4 (the position where "D" was found).
strFind("ABCDEFGHIJ","KHD",10,-10); //Returns the value 8 (the position where "H" was found).

strFind 函式是 strNFind 函式的補充。

strFmt

格式化指定的字串,並將任何出現的 n 以第 n 個引數取代。

str strFmt(str _string, ...)

參數

參數 Description
_繩子 要格式化的字串。

返回值

格式化字串。

備註

如果未為參數提供引數,則參數會在字串中傳回為「%n」。 實數類型值的字串轉換限制為小數點後兩位。 值會四捨五入,而不是截斷。 Microsoft .NET Framework 中的 System.String::Format 方法可用來取得更多功能,如範例所示。

Example

static void strFmtExampleJob(Args _arg)
{
    System.Double sysDouble;
    real r = 8.3456789;
    int  i = 42;
    utcDateTime utc = str2DateTime("2008-01-16 13:44:55" ,321); // 321 == YMD.
    str  s;
    ;
    s = strFmt("real = %1, int = %2, utcDateTime = %3, [%4]", r, i, utc);
    info("X1:  " + s);
    //
    sysDouble = r;
    s = System.String::Format("{0:##.####}", sysDouble);
    info("N1:  " + s);
    //
    s = System.String::Format("{0,6:C}", sysDouble); // $
    info("N2:  " + s);
    /**********  Actual Infolog output
    Message (02:16:05 pm)
    X1:  real = 8.35, int = 42, utcDateTime = 1/16/2008 01:44:55 pm, [%4]
    N1:  8.3457
    N2:   $8.35
    **********/
}

strIns

透過將一個字串插入另一個字串來建立字串。

str strIns(str _text1, str _text2, int _position)

參數

參數 Description
_text1 要插入另一個字串的字串。
_text2 要插入到另一個字串中的字串。
_位 _text2 參數的第一個字元應該出現在輸出字串中的位置。

返回值

組合的文字字串。

備註

strIns 函數與 strDel 函數互補。 如果 _position 參數的值大於原始字串的長度,則要插入的字串會附加到原始字串的結尾。

strIns("ABFGH","CDE",3); //Returns the string "ABCDEFGH".
strIns("ABCD","EFGH",10); //Returns the string "ABCDEFGH".

strKeep

僅使用第二個輸入字串指定的第一個輸入字串中的字元來建置字串,而第二個輸入字串指定應該保留該字串。

str strKeep(str _text1, str _text2)

參數

參數 Description
_text1 包含可用來建置輸出字串之字元的字串。
_text2 指定輸出字串要保留哪些字元的字串。

返回值

保留的字元字串。

備註

strKeep("ABBCDDEFGHB","BCD"); //Returns the string "BBCDDB".
strKeep("abcZcba","bc") //Returns the string "bccb".

strKeep 函數是 strRem 函數的補充。

斯特倫

計算指定字串的長度。

int strLen(str text)

參數

參數 Description
收發簡訊 要計算長度的字串。

返回值

指定字串的長度。

備註

strLen("ABC"); //Returns the value 3.
strLen("ABCDEFGHIJ"); //Returns the value 10.

strLine

從跨越多行的字串擷取單一行。

str strLine(str string, int count)

參數

參數 Description
字串 可能跨越多行的字串。
count 要返回的線的偏移。

返回值

字串參數所指定的字串的複製行。

備註

字串的第一行的偏移量為 0。 您可以將 \n\r\n 字元內嵌在字串中,將多行指派給一個字串。 此外,您可以在左引號之前使用位置符號 (@),並使用 Enter 鍵在 X++ 程式碼編輯器中將字串值的部分分散到多行上。

Example

str mytxt = "first-line\nsecond-line\nlast-line";
// Prints "second-line".
print strLine(mytxt,1);
// Prints "last-line".
print strLine(mytxt,2);            

strLTrim

從文字字串中移除前導空白。

str strLTrim(str text)

參數

參數 Description
收發簡訊 要從中刪除前導空白的字串。

返回值

已移除前導空白之文字的字串對等。

備註

strLTrim 函式是 strRTrim 函式的補充。

Example

// Returns the text string "ABC-DEFG".
strLTrim("   ABC-DEFG");

strLwr

將指定字串中的所有字母轉換為小寫。

str strLwr(str _text)

參數

參數 Description
_簡訊 要轉換為小寫的字串。

返回值

僅包含小寫字母的指定字串副本。

備註

strLwr 函數是 strUpr 函數的補充。 strLwr 函式會使用 Win32 API 中的 LCMapString 函式。

Example

static void strLwrExample(Args _args)
{
    // Returns the text string "abcdd55efghij".
    print strLwr("Abcdd55EFGHIJ");
    pause;
}

strNFind

搜尋文字字串的一部分,以尋找未包含在指定字元清單中的字元的第一次出現。

int strNFind(str _text, str _characters, int _position, int _number)

參數

參數 Description
_簡訊 要搜尋的文字字串。
_characters 要從搜尋中排除的字元清單。
_位 字串中要開始搜尋的位置。
_數 一個帶號的數字,指示搜索方向和要搜索的職位數量。 如果減號位於_number之前,系統會以與_position相反的順序搜尋_number字元。

返回值

_characters 參數未指定的字元第一次出現的位置,或找不到時為 0。

備註

搜尋不區分大小寫。 若要從字串的開頭到結尾進行搜尋,請使用 _position 參數的值 1。 如果減號位於 _number 參數的值之前,則會從 _position 參數所指定的位置開始,以相反的順序搜尋字元。

strNFind("ABCDEFGHIJ","ABCDHIJ",1,10); //Returns the value 5 (the position of "E");
strNFind("CDEFGHIJ","CDEFGIJ",10,-10); //Returns the value 6 (the position of "H").
strNFind("abcdef","abCdef",3,2) //Returns the value 0.
strNFind("abcdef", "abcef",3,2) //Returns the value 4.

strNFind 函式是 strFind 函式的補充。

str戳

用另一個字串覆寫字串的一部分。

str strPoke(str _text1, str _text2, int _position)

參數

參數 Description
_text1 原始字串。
_text2 要取代原始字串部分的字串。
_位 開始取代字元的原始字串位置。

返回值

新字串。

備註

新字串可以比原始字串長。 不過,如果 _position 參數的值大於字串的長度,則會傳回原始字串而不進行取代。

strPoke("12345678","AAA",3); //Returns the string "12AAA678".
strPoke("abcde","4567",4); //Returns the string "abc4567".
strPoke("abcde", "4567", "10"); //Returns the string "abcde".

str提示

附加具有指定句點字元數目的字串,後面接著冒號和空格字元。

str strPrompt(str _string, _int len)

參數

參數 Description
_繩子 原始字串。
_len 所需的最終字串長度。

返回值

看起來像使用者輸入提示的字串。

備註

在非典型情況下,當 _len 參數的值僅略大於原始字串的長度時,會給予添加尾端空格的最高優先順序。 接下來,冒號優先。 最低優先順序是給句點。 _len 參數的負值會傳回附加尾端空格的輸入字串。

strPrompt("ab",-1); //Returns "ab ".
strPrompt("ab",3); //Returns "ab ".
strPrompt("ab",4); //Returns "ab: ".
strPrompt("ab",5); //Returns "ab.: ".
strPrompt("ab",6); //Returns "ab..: ".

Example

static void JobStrPromptDemo(Args _args)
{
    // Printed string is "[abc..: ]"
    print "[", strPrompt("abc", 7), "]";
    pause;
}

strRem

從另一個字串中移除一個字串中指定的字元。

str strRem(str text1, str text2)

參數

參數 Description
文1 要從中移除字元的字串。
正文2 要從輸出字串中排除的字元。

返回值

原始字串的其餘內容。

備註

此函式會區分大小寫。

strRem("abcd_abcd","Bc"); //Returns the string "abd_abd".
strRem("ABCDEFGABCDEFG","ACEG"); //Returns the string "BDFBDF".

此函式是 strKeep 函式的補充。

strRep

重複一串字元。

str strRep(str _text, str _number)

參數

參數 Description
_簡訊 要重複的字串。
_數 重複字串的次數。

返回值

包含重複指定次數的原始字串內容的新字串。

Example

下列範例會列印文字字串 ABABABABABAB。

static void strRepExample(Args _arg)
{
    str strL;
    ;
    strL = strRep("AB",6);
    print strL;
    pause;
}

strRTrim

從字串結尾移除尾端空格字元。

str strRTrim(str _text)

參數

參數 Description
_簡訊 要從中移除尾端空格字元的字串。

返回值

不包含尾端空格字元的指定字串複本。

備註

strRTrim("ABC-DEFG- "); //Returns the string "ABC-DEFG-".
strRTrim(" CD "); //Returns " CD".

strRTrim 函式是 strLTrim 函式的補充。

strScan

搜尋文字字串以尋找另一個字串的出現。

int strScan(str _text1, str _text2, int _position, int _number)

參數

參數 Description
_text1 要搜尋的字串。
_text2 要尋找的字串。
_位 _text1參數中要執行比較的第一個位置。
_數 _text1參數中要重試比較的位置數目。 如果減號位於 _number 參數之前,系統會從指定位置以相反順序搜尋字元數。

返回值

在字串中找到指定字串的位置;否則為 0 (零)。

備註

比較不區分大小寫。 小於 1_position 參數值會被視為 1。 掃描方向由 _number 參數中指定的符號控制。 正號表示每次連續比較都會從更靠近字串結尾的位置開始。 負號表示每次比較都會從更靠近字串開頭的位置開始。

strScan("ABCDEFGHIJ","DEF",1,10); //Returns the value 4.
strScan ("ABCDEFGHIJ","CDE",10,-10); //Returns the value 3.

strUpr

將字串中的所有字母轉換為大寫。

str strUpr(str _text)

參數

參數 Description
_簡訊 要轉換為大寫字母的字串。

返回值

僅包含小寫字母的指定字串副本。

備註

strUpr 函數是 strLwr 函數的補充。 strUpr 函式會使用 Win32 API 中的 LCMapString() 函式。

Example

下列範例會列印 ABCDD55EFGHIJ

static void strUprExample(Args _args)
{
    print strUpr("Abcdd55EFGhiJ");
    pause;
}

擷取字串的一部分。

str subStr(str _text, int _position, int _number)

參數

參數 Description
_簡訊 原始字串。
_位 原始字串中要擷取的零件開始的位置。
_數 帶正負號的整數,指出要從原始字串擷取的位置方向和數目。 如果減號位於 _number之前,系統會從指定位置向後選取子字串。

返回值

原始字串的子字串。

備註

如果減號位於 _number 參數的值之前,則會從指定位置向後選取子字串。

subStr("ABCDEFGHIJ",3,5); //Returns the string "CDEFG".
subStr("ABCDEFGHIJ",7,-4); //Returns the string "DEFG".
subStr("abcdef",2,99) //Returns the string "bcdef".
subStr("abcdef",2,3) //Returns the string "bcd".
subStr("abcdef",2,-3); //Returns the string "ab".

str包含

檢查文字字串是否包含另一個字串。

boolean strContains(str _text, str _potentialContains)

參數

參數 Description
_簡訊 要搜尋的原始字串。
_potentialContains 要尋找的字串。

返回值

如果原始字串包含搜尋的字串,則為 True;否則為 false。

備註

比較不區分大小寫。

strContains("ABCDEFGHIJ","abc"); //Returns true.
strContains("ABCDEFGHIJ","ABC"); //Returns true.
strContains("ABCDEFGHIJ","K"); //Returns false.

strStartsWith

檢查文字字串是否以另一個字串開頭。

boolean strStartsWith(str _string, str _potentialStart)

參數

參數 Description
_繩子 要搜尋的原始字串。
_potentialStart 開頭的潛在字串。

返回值

如果潛在字串是原始字串的開頭,則為 True;否則為 false。

備註

比較不區分大小寫。

strStartsWith("ABCDEFGHIJ","abc"); //Returns true.
strStartsWith("ABCDEFGHIJ","ABC"); //Returns true.
strStartsWith("ABCDEFGHIJ","B"); //Returns false.

strEnds與

檢查文字字串是否以另一個字串結尾。

boolean strEndsWith(str _string, str _potentialEnd)

參數

參數 Description
_繩子 要搜尋的原始字串。
_potentialEnd 末尾的潛在字串。

返回值

如果潛在字串結束原始字串,則為 True;否則為 false。

備註

比較不區分大小寫。

strEndsWith("ABCDEFGHIJ","ghij"); //Returns true.
strEndsWith("ABCDEFGHIJ","HIJ"); //Returns true.
strEndsWith("ABCDEFGHIJ","B"); //Returns false.

strLRTrim

從文字字串中移除前導和尾部空白。

str strLRTrim(str text)

參數

參數 Description
收發簡訊 要從中刪除前導和尾部空白的字串。

返回值

不包含前導和尾端空格字元的指定字串複本。

備註

strLRTrim 函式是 strRTrimstrLTrim 函式的補充。

Example

// Returns the text string "ABC-DEFG".
strLRTrim("   ABC-DEFG   ");