在Azure B2C自定义策略中提取手机号中的国家代码
Azure B2C自定义策略提取手机号国家代码方案
内置函数情况
Azure B2C自定义策略的内置字符串操作函数中,没有专门提取手机号国家代码的专用函数,但可以通过现有字符串函数组合实现需求。
高效可靠的实现方式
针对你提供的"+852 91031201"格式(+国家代码 手机号,空格分隔),推荐两种实现方式:
方法1:Split字符串拆分法
利用SplitString函数按空格拆分手机号,提取第一个分段后去掉开头的+:
- 第一步:拆分手机号为两个部分
<ClaimsTransformation Id="SplitMobilePhone" TransformationMethod="SplitString"> <InputClaims> <InputClaim ClaimTypeReferenceId="mobilePhone" TransformationClaimType="inputClaim" /> </InputClaims> <InputParameters> <InputParameter Id="delimiter" DataType="string" Value=" " /> <InputParameter Id="splitOutputClaimType" DataType="string" Value="stringCollection" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="mobilePhoneParts" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>
- 第二步:提取第一个分段并移除开头的
+
<ClaimsTransformation Id="ExtractCountryCode" TransformationMethod="StringReplace"> <InputClaims> <InputClaim ClaimTypeReferenceId="mobilePhoneParts" TransformationClaimType="inputClaim" /> </InputClaims> <InputParameters> <InputParameter Id="position" DataType="int" Value="0" /> <InputParameter Id="oldValue" DataType="string" Value="+" /> <InputParameter Id="newValue" DataType="string" Value="" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="countryCode" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>
方法2:截取子串法
通过IndexOf找到空格位置,再用Left截取国家代码部分并移除+:
<ClaimsTransformation Id="GetCountryCodeFromMobile" TransformationMethod="Left"> <InputClaims> <InputClaim ClaimTypeReferenceId="mobilePhone" TransformationClaimType="inputClaim" /> </InputClaims> <InputParameters> <InputParameter Id="length" DataType="int" Value="-1" /> <InputParameter Id="findDelimiter" DataType="string" Value=" " /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="countryCodeWithPlus" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="RemovePlusFromCountryCode" TransformationMethod="StringReplace"> <InputClaims> <InputClaim ClaimTypeReferenceId="countryCodeWithPlus" TransformationClaimType="inputClaim" /> </InputClaims> <InputParameters> <InputParameter Id="oldValue" DataType="string" Value="+" /> <InputParameter Id="newValue" DataType="string" Value="" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="countryCode" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>
注意事项
- 确保用户手机号格式统一为
+国家代码 手机号(带空格分隔),如果存在格式不统一的情况,建议先添加格式验证的ClaimsTransformation,避免提取失败。 - 若需处理无空格的格式(如
+85291031201),则需要结合国家代码规则库进行匹配,这种情况建议在自定义REST API中实现更灵活的提取逻辑,再通过B2C的RESTful技术配置调用。
内容的提问来源于stack exchange,提问作者nullmicgo
相关产品推荐
相关产品推荐

