猿问

删除一个字符,取其后的数字,删除下一​​个,依此类推

我正在尝试在 C# 中执行以下操作:我有一个包含以下数据的字符串(这是一个可用的最长字符串的示例,它取自数据库,数据库可以根据哪个 ID 在字符串中返回不同的数字我选择): |1|,|2|,|3|,|4|,|5|,|6|,|7|,|8|,|9|,|10|,|11|,|12|,|13|,|14|,|15|,|16|,|17|,|18|,|19|,|20|,|21|,|22|,|23|,|24|,|25|,|26|,|27|,|28|,|29|,|30|,|31|,|32|,|33|,|34|,|35|,|36|,|37|,|38|,|39|,|40|,|41|,|42|,|43|,|44|,|45|,|46|,|47|,|48|,|49|,|50|,|51|,|52|,|53|


这些是一年中的几个星期,我想删除每个“|” 和 "," 并将每个整数存储在列表中的一个索引中,如下所示:


`

weekList[0] = 1

weekList[1] = 2

weekList[2] = 3

weekList[3] = 4

weekList[4] = 5

.

.

.

weekList[49] = 50

weekList[50] = 51

weekList[51] = 52

weekList[52] = 53

`

如何实现?我已经阅读了很多关于正则表达式的内容,但根本找不到这样做的方法......


慕无忌1623718
浏览 76回答 4
4回答

叮当猫咪

1) 用逗号 ( ,) 分割字符串。2)用字符空间()和管道(|)修剪分割字符串中的每个元素3) 将每个元素解析为intstring str = "| 1 |,| 2 |,| 3 |,| 4 |,| 5 |,| 6 |,| 7 |,| 8 |,| 9 |,| 10 |,| 11 |,| 12 |,| 13 |,| 14 |,| 15 |,| 16 |,| 17 |,| 18 |,| 19 |,| 20 |,| 21 |,| 22 |,| 23 |,| 24 |,| 25 |,| 26 |,| 27 |,| 28 |,| 29 |,| 30 |,| 31 |,| 32 |,| 33 |,| 34 |,| 35 |,| 36 |,| 37 |,| 38 |,| 39 |,| 40 |,| 41 |,| 42 |,| 43 |,| 44 |,| 45 |,| 46 |,| 47 |,| 48 |,| 49 |,| 50 |,| 51 |,| 52 |,| 53 |";int[] arr = str.Split(',')               .Select(x => x.Trim(new char[] { ' ', '|' }))               .Select(x => int.Parse(x))               .ToArray();现在这arr 是你的整数数组。在线演示选择:1) 删除管道( |) 和空格( )。2) 用逗号( ,) 分割。3) 将每个拆分的字符串解析为 int。int[] arr = str.Replace("|", "")                .Replace(" ", "")                .Split(',')                .Select(x => int.Parse(x))                .ToArray();在线演示

吃鸡游戏

这将为您工作:&nbsp; &nbsp; &nbsp; &nbsp; string str = "|1|,|2|,|3|,|4|,|5|,|6|,|7|,|8|,|9|,|10|,|11|,|12|,|13|,|14|,|15|,|16|,|17|,|18|,|19|,|20|,|21|,|22|,|23|,|24|,|25|,|26|,|27|,|28|,|29|,|30|,|31|,|32|,|33|,|34|,|35|,|36|,|37|,|38|,|39|,|40|,|41|,|42|,|43|,|44|,|45|,|46|,|47|,|48|,|49|,|50|,|51|,|52|,|53|";&nbsp; &nbsp; &nbsp; &nbsp; str = str.Replace("|", "");&nbsp; &nbsp; &nbsp; &nbsp; string[] subStrings = str.Split(',');&nbsp; &nbsp; &nbsp; &nbsp; int[] ints = new int[subStrings.Length];&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < subStrings.Length; i++)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ints[i] = Convert.ToInt32(subStrings[i]);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;

交互式爱情

我想出了您要求的正则表达式方法。首先,您必须使用正则表达式模式\d+查找所有数字,此模式匹配一个或多个数字。使用Regexstorm 测试来测试你的正则表达式。循环匹配并分配给您的数组。这是我提出的 C# 交互式示例:string input = "| 1 |,| 2 |,| 3 |,| 4 |,| 5 |,| 6 |,| 7 |,| 8 |,| 9 |,| 10 |,| 11 |,| 12 |,| 13 |,| 14 |,| 15 |,| 16 |,| 17 |,| 18 |,| 19 |,| 20 |,| 21 |,| 22 |,| 23 |,| 24 |,| 25 |,| 26 |,| 27 |,| 28 |,| 29 |,| 30 |,| 31 |,| 32 |,| 33 |,| 34 |,| 35 |,| 36 |,| 37 |,| 38 |,| 39 |,| 40 |,| 41 |,| 42 |,| 43 |,| 44 |,| 45 |,| 46 |,| 47 |,| 48 |,| 49 |,| 50 |,| 51 |,| 52 |,| 53 |";MatchCollection matches = Regex.Matches(input, @"\d+");int[] values = new int[matches.Count];for (int i = 0; i < matches.Count; i++)&nbsp; &nbsp; values[i] = Convert.ToInt32(matches[i].Value);

白衣非少年

private void button1_Click(obj sender,EventArgs e){String str = "|1|,|2|,|3|,|4|...";char[] ch =str.ToArray(),weekList=new char[ch.Length];Int index=1;for (int i=1;i < ch.Length ;i++){if(index < ch.length-1){weekList[i] = ch[index];Index += 4;}}MessageBox.Show(weekList[0]);//1MessageBox.Show(weekList[9]);//10}
随时随地看视频慕课网APP
我要回答