将混合的字母数字字符串拆分为文本和数字部分的快速方法

本文关键字:数字部 文本 方法 拆分 混合 数字 字符串 数字字符 | 更新日期: 2023-09-27 18:18:13

>假设我有一个字符串,例如

abc123def456

将字符串拆分为数组的最佳方法是什么,例如

["abc", "123", "def", "456"]

将混合的字母数字字符串拆分为文本和数字部分的快速方法

string input = "abc123def456";
Regex re = new Regex(@"'D+|'d+");
string[] result = re.Matches(input).OfType<Match>()
                    .Select(m => m.Value).ToArray();
string[] result = Regex.Split("abc123def456", "([0-9]+)");

上面将使用任何数字序列作为分隔符,尽管将其包装在 () 中表示我们仍然希望将分隔符保留在返回的数组中。

注意:在示例代码段中,我们将得到一个空元素作为数组的最后一个条目。

您查找的边界可以描述为"数字跟随非数字的位置,或非数字跟随数字的位置"。

所以:

string[] result = Regex.Split("abc123def456", @"(?<='D)(?='d)|(?<='d)(?='D)");

如果'd'D不够具体,请分别使用 [0-9][^0-9]

在数字周围添加空格,然后将其拆分。所以有解决方案。

Regex.Replace("abc123def456", @"('d+)", @" '1 ").Split(' ');

我希望它有效。

您可以将字符串转换为 char 数组,然后循环遍历字符。只要字符的类型相同(字母或数字(,请继续将它们添加到字符串中。当下一个字符不再属于同一类型(或者您已到达字符串的末尾(时,将临时字符串添加到数组并将临时字符串重置为 null。