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

如何拆分特定区域性字符串?ku-Arab-IQ文化拆分异常求助

解决区域性字符串拆分顺序不符预期的问题

你当前的Split操作会把字符串里所有的.都当作分隔符,不管是阿拉伯语前缀里的分隔点还是数字的小数点,最终拆分出的元素顺序自然和你期望的不一样。这里有个简单的方案,能帮你把数字相关的拆分结果放在前面,非数字的部分移到后面:

代码实现

string tempstring = "د.ع.‏123,456.00"; // 区域性 "ku-Arab-IQ"
string[] temp = tempstring.Split(".".ToCharArray());

// 筛选出包含数字的拆分片段
var numberParts = temp.Where(segment => segment.Any(char.IsDigit)).ToArray();
// 筛选出不包含数字的拆分片段
var nonNumberParts = temp.Where(segment => !segment.Any(char.IsDigit)).ToArray();

// 合并成你需要的顺序
string[] result = numberParts.Concat(nonNumberParts).ToArray();

效果说明

运行这段代码后,result数组的内容完全符合你的预期:

  • [0]: "‏123,456"
  • [1]: "00"
  • [2]: "د"
  • [3]: "ع"

对于ar-IQ区域性的字符串"123,456.00 د.ع.‏",这个方法同样适用——包含数字的拆分片段会自动排在前面,和你提到的“正常工作”的结果一致。

如果需要更严格的数字段判断(比如不想把"00 د"这类混合内容归为数字段),可以调整判断逻辑,比如检查片段内是否只有数字、千分位逗号这类数字格式字符,但根据你的需求,上面的方案已经足够解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:54:26