首页 新闻 会员 周边 捐助

[高分求助]C# 正则表达式 Split问题

1
悬赏园豆:50 [已解决问题] 解决于 2012-05-23 21:28

最近在看正则表达式,有个地方疑惑,请高手指教,不胜感激!

 var strs = Regex.Split("UUUUUdefghiOOOOOjklmnFFFFFFopqrst", "([a-z])\\1+", RegexOptions.IgnoreCase);

最后strs的结果如下

{string[7]}
[0]: ""
[1]: "U"
[2]: "defghi"
[3]: "O"
[4]: "jklmn"
[5]: "F"
[6]: "opqrst"

1、为什么U、O、F也会出现在数组中?

2、为什么第一个里面是个""?

3、怎么样让产生的结果中,没有U、O、F和""这些?

感谢

Jim_技迷的主页 Jim_技迷 | 初学一级 | 园豆:161
提问于:2012-05-22 16:16
< >
分享
最佳答案
0

你想通过什么规则进行分隔?

我这边测试没出现第2个问题。

收获园豆:50
dudu | 高人七级 |园豆:30948 | 2012-05-22 20:25

以重复字符(2个以上都分割)为标识,来分割字符串

Jim_技迷 | 园豆:161 (初学一级) | 2012-05-23 16:07

@Jim_技迷: 

为什么U、O、F也会出现在数组中?是因为([a-z])所加的括号,但括号不能去掉,因为后面的\1需要引用它。

我找到的解决方法是分两步走,代码如下:

var text = "UUUUUdefghiOOOOOjklmnFFFFFFopqrst";
var str = Regex.Replace(text, "([a-z])\\1+", ",", RegexOptions.IgnoreCase);
var strs = str.Split(',');

 

 

dudu | 园豆:30948 (高人七级) | 2012-05-23 17:39

@dudu: 哦,谢谢。

Jim_技迷 | 园豆:161 (初学一级) | 2012-05-23 21:27

@dudu: 其实我不是想解决问题,是想弄明白他的执行过程,呵呵

Jim_技迷 | 园豆:161 (初学一级) | 2012-05-23 21:28

@Jim_技迷: 可以看反编译出来的Regex.Split的代码。

dudu | 园豆:30948 (高人七级) | 2012-05-23 21:36
其他回答(1)
0
1、为什么U、O、F也会出现在数组中?未知
2、为什么第一个里面是个""?因为第一个是UUUUU
3、怎么样让产生的结果中,没有U、O、F和""这些?未知 
Java侬仔 | 园豆:202 (菜鸟二级) | 2012-05-22 16:55

额。。。。啊。。。。。

支持(0) 反对(0) Jim_技迷 | 园豆:161 (初学一级) | 2012-05-22 17:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册