You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中split方法分割GUID字符串结果异常问题咨询

问题原因与解决方法

错误根源

Java中String.split()方法的参数是正则表达式,而|是正则表达式里的特殊元字符,代表“或”的逻辑。直接传入"|"时,正则会将其解析为匹配空字符串的分隔符,导致原字符串被拆分成单个字符的数组,这就是你拿到uGUID="e"、uAPI="6"的原因。

正确解决方案

需要对|进行转义,有两种常用方式:

方式1:使用双反斜杠转义

在Java字符串中,反斜杠本身需要转义,所以要写"\\|"来表示正则里的字面量|:

String decodedQrText = qrCodeHelper.decodeQrFromUri(getContext(), attachment.internalUri);
String[] separated = decodedQrText.split("\\|");
String uGUID = separated[0];
String uAPI = separated[1];
String uEmail = separated[2];

方式2:使用Pattern.quote()方法

如果不确定分隔符是否包含正则特殊字符,用Pattern.quote()可以自动将字符串转义为正则字面量,更安全:

import java.util.regex.Pattern;

// ...

String decodedQrText = qrCodeHelper.decodeQrFromUri(getContext(), attachment.internalUri);
String[] separated = decodedQrText.split(Pattern.quote("|"));
String uGUID = separated[0];
String uAPI = separated[1];
String uEmail = separated[2];

验证结果

修改后,separated数组会按|正确分割成3个元素,每个元素对应完整的GUID和邮箱字符串。

内容的提问来源于stack exchange,提问作者Mark Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:39:52