如何拆分特定区域性字符串?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
相关产品推荐
相关产品推荐

