点击或拖拽改变大小

Functions.CharMix 方法

X#
返回一个字符串,其奇数位置字符和偶数位置字符分别来自两个不同的字符串。

命名空间:  XSharp.Core
程序集:  XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法
 FUNCTION CharMix(
	cOdd AS STRING,
	cEven AS STRING
) AS STRING
查看代码

参数

cOdd
类型:String
其字符将构成返回字符串中奇数位置字符的字符串。
cEven
类型:String
其字符将构成返回字符串中偶数位置字符的字符串。

返回值

类型:String
一个字符串,其中cOddcEven的字符交替出现。
cOdd的长度决定了返回字符串的长度:假设cEven至少包含一个字符,返回字符串的长度是cOdd长度的两倍: 较长的cEven字符串会被截断至cOdd的长度。 较短的cEven会从头到尾处理,然后再从头开始,直到cOdd中没有更多字符。 如果cEven包含少于一个字符,则返回NULL_STRING。
备注
CharMix()提供了一种方便的方法来重新组合从CharOdd()和CharEven()提取的字符串。
示例
这个例子混合了两个字符串:
X#
1? CharMix("13579", "24680")    // 1234567890
这个例子在游戏中洗牌:
X#
 1Function Start()
 2    LOCAL cPoker AS STRING
 3    cPoker := "AKJQ0123456789"
 4    ? Shuffle(cPoker, 10)    // Q37A048K159J26
 5    RETURN TRUE
 6FUNCTION Shuffle(cDeck AS STRING, ;
 7        siShuffles AS SHORTINT) AS STRING PASCAL
 8    // 假设卡片数量为偶数。
 9    // cDeck的长度可被2整除
10    LOCAL siCounter AS SHORTINT
11    LOCAL siCards AS SHORTINT
12    siCards := SLen(cDeck)
13    // 第一张和最后一张牌不洗牌;
14    // 所以添加/填充空白卡
15    siCards += 2
16    cDeck := PadC(cDeck, siCards)
17    FOR siCounter := 1 UPTO siShuffles
18        // 将牌组切成两半并洗牌
19        cDeck := CharMix(Substr3(cDeck, 1,;
20        siCards/2), Substr2(cDeck, (siCards/2)+1))
21    NEXT
22    RETURN Substr3(cDeck, 2, siCards-2)
23    // 排除添加的空白卡
参见