Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 快速将字母数字混合字符串拆分为文本和数字部分的方法?_C#_Regex_String - Fatal编程技术网

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

C# 快速将字母数字混合字符串拆分为文本和数字部分的方法?,c#,regex,string,C#,Regex,String,假设我有一个字符串,比如 abc123def456 将字符串拆分为数组的最佳方法是什么 ["abc", "123", "def", "456"] 您可以将字符串转换为字符数组,然后循环遍历字符。只要字符的类型(字母或数字)相同,就将它们添加到字符串中。当下一个字符不再是同一类型(或已到达字符串末尾)时,将临时字符串添加到数组中,并将临时字符串重置为null string[] result = Regex.Split("abc123def456", "([0-9]+)"); 上面的代码将使用

假设我有一个字符串,比如

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

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

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

string[] result = Regex.Split("abc123def456", "([0-9]+)");
上面的代码将使用任何数字序列作为分隔符,尽管将其包装在
()
中表示仍希望将分隔符保留在返回的数组中

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

string input=“abc123def456”;
string input = "abc123def456";
Regex re = new Regex(@"\D+|\d+");
string[] result = re.Matches(input).OfType<Match>()
                    .Select(m => m.Value).ToArray();
正则表达式re=新正则表达式(@“\D+|\D+”); string[]result=re.Matches(input).OfType() .Select(m=>m.Value).ToArray();
在数字周围添加空格,然后将其拆分。这就是解决办法

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

我希望它能起作用。

你寻找的边界可以描述为“一个数字跟在一个非数字后面的位置,或者一个非数字跟在一个数字后面的位置。”

因此:


string[]result=Regex.Split(“abc123def456”,@”(?python?你没有看到c#tag吗?@nyarlathotep)。对不起,我没有
c#
编译器。@RubensFarias这个解决方案相当于refp。毕竟,这主要是关于Regex的。@Tomalak当然,但不是c#;例如,当我用c#回答Java问题时(更类似的语言),我也会得到“isntjava代码”的注释。也许这样更好,但我明白你的意思,ty+1:在末尾添加一个空值,但似乎比我的version@RubensFarias是的,我出去抽了根烟,意识到这一刻开始变冷了——不过谢谢你的评论!看看@Tomalak version=)我会选择这个,如果需要,你可以用
\d+
替换
[a-z]+
string[] result = Regex.Split("abc123def456", @"(?<=\D)(?=\d)|(?<=\d)(?=\D)");