“String.Split"和"Regex.Split"为什么都分割不了这个字符串???

starrycheng 2017-05-20 03:49:59
string strtest = "$BDBBX,0458202,772,9.4,1,51,0,11000,2.1,1.2,10,186940,161229,8,1,01,1.2,50.0,1,0,0,0,0000,1*6D\r\n$BDTXR,1,0315239,2,,A43030303030302C3036333233372E30302C333131362E34393537372C4E2C31323133302E39353630382C452C312C30332C342E36312C312E372C4D*43\r\n$BDTXR,1,0315239,2,,A43030303030302C3036333233372E30302C333131362E34393537372C4E2C31323133302E39353630382C452C312C30332C342E36312C312E372C4D*43\r\n$BDTXR,1,0315239,2,,A43030303030302C3036333233372E30302C333131362E34393537372C4E2C31323133302E39353630382C452C312C30332C342E36312C312E372C4D*43\r\n$BDTXR,1,0315239,2,,A43030303030302C3036333233372E30302C333131362E34393537372C4E2C31323133302E39353630382C452C312C30332C342E36312C312E372C4D*43\r\n$BDBBX,0458202,772,9.4,1,51,0,11000,2.1,1.2,10,186940,161229,8,1,01,1.2,50.0,1,0,0,0,0000,1*6D\r\n$BDBBX,0458202,772,9.4,1,51,0,11000,2.1,1.2,10,186940,161229,8,1,01,1.2,50.0,1,0,0,0,0000,1*6D\r\n"

想根据“$BDTXR”把字符串分割成数组,发现 “String.Split"和"Regex.Split"都分割不了?
是因为 “”\r\n“换行符吗??? 好久没写C#了,请大师指点。
...全文
438 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
正则因为$是特殊符,所以会分割不对,正常的str.Split不可能不行
test100000001 2017-05-25
  • 打赏
  • 举报
回复
sp1234 怎么哪里都能看见这个垃圾东西
  • 打赏
  • 举报
回复
引用 楼主 starrycheng 的回复:
想根据“$BDTXR”把字符串分割成数组,发现 “String.Split"和"Regex.Split"都分割不了?
谁知道你会不会写代码呢?贴出你的一行代码来说明。
秋的红果实 2017-05-20
  • 打赏
  • 举报
回复
奥,错了,更正下

Regex rgx = new Regex(@"(?<=\$BDTXR\,).*\r\n");
 string[] arr3 = rgx.Matches(strtest).Cast<Match>().Select(m => m.Value).ToArray<string>();
秋的红果实 2017-05-20
  • 打赏
  • 举报
回复

string[] arr = strtest.Split(new string[] { "$BDTXR," }, StringSplitOptions.None); //测试了可用

string[] arr2 = Regex.Split(strtest, @"(?<=\$BDTXR\,).*\r\n", RegexOptions.None); //也可以
分隔符是$BDTXR,不是$BDBBX,,会不会这里弄错了
xuzuning 2017-05-20
  • 打赏
  • 举报
回复
            var a = strtest.Split(new string[] { "$BDTXR" }, StringSplitOptions.None);
            var b = Regex.Split(strtest, @"(?s)\$BDTXR");
两者都可以
xuggzu 2017-05-20
  • 打赏
  • 举报
回复
因为$对于C#来说是特殊符号,必须用转义字符,要这样写: string[] sarr = Regex.Split(strtest, @"\$BDTXR", RegexOptions.None);
starrycheng 2017-05-20
  • 打赏
  • 举报
回复
引用 1 楼 followmyheart926 的回复:
1、先把\r、\n过滤掉,String.Replace("\\r\\n", "");然后在分割 2、Split('')和Split("")意思不同,第一个是单字符分割,第二个是多字符分割 可以尝试下
大师,试过了,不行啊。求实例,求Demo。
followmyheart926 2017-05-20
  • 打赏
  • 举报
回复
1、先把\r、\n过滤掉,String.Replace("\\r\\n", "");然后在分割 2、Split('')和Split("")意思不同,第一个是单字符分割,第二个是多字符分割 可以尝试下

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧