【发布时间】:2016-02-04 04:19:59
【问题描述】:
我有这样的字符串
string text = "224|3|0|0|0|0|0|0|0|0|0|0|0|0|2|You go back to meet the person from the Future.|1|You will be moved.|82|0|0|0|0|0|0|0|0|0|0|0|0|0|0|81|0|0|0|";
如何拆分“|”这个管道字符有异常,所以结果将是这样的 3 部分?
22430000000000002
You go back to meet the person from the Future.|1|You will be moved.
820000000000000081000
我试过了:
string[] line = text.Split('|');
Console.Write(line[0]); //until line[15] For print section #1
Console.Write(line[line.length-2]); //until line[line.length-20] For print section #3
文本是动态的,所以也许在第 2 节它会是
You go back to meet the person from the Future.|1|You will be moved.|2|Hello
因此,当索引达到 [16] 时,文本不会被拆分,直到 line.length-20 这可能吗 ? 谢谢!!
【问题讨论】:
-
不能为内部文本选择不同的分隔符吗?数字分隔符的数量(文本的左侧和右侧)是否固定?
-
或者可能使用 JSON 格式存储数据,
|用作文本消息中的字段占位符。 -
更结构化的格式是要走的路。
-
同意马丁。如果您可以为内部文本选择不同的选择器,例如 224&3&0&0&0&0&0&0&0&0&0&0&0&0&2|你回去会见来自未来的人。!1!你会被感动。|82&0&0&0&0&0&...然后拆分将是一个快照。
-
@user3409182 根本不要使用
Split- 如果您将分隔符也用作数据,它将无法可靠地工作。使用正则表达式查找 15 个|分隔的数字字段、一个随机文本字段以及最后的许多其他字段。或者,或者,使用更好的存储格式,如 JSON(如果您可以将所有数据行转换为新格式)。使用 JSON(甚至是不同的分隔符)会让你的工作变得简单很多。
标签: c# arrays string split string-length