【发布时间】:2018-06-12 18:53:27
【问题描述】:
如何在 Elixir 或 Erlang 中执行 String replace_at?
例如给定这个固定宽度的文件:
EmployeeFundMappingID EmployeeID FundID IsActive EntryDate ExitDate ExitTypeID DateCreated CreatedByID DateModified ModifiedByID ConfirmedBy DateConfirmed GUID IsPooled DatePooled
1 1118544 1 1 2009-04-20 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2009-04-20 17:48:12.067 NULL NULL NULL
2 1027350 1 1 2008-03-03 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2008-05-04 15:13:30.303 NULL NULL NULL
3 1024795 1 1 2008-02-29 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2008-05-04 15:13:30.303 NULL NULL NULL
4 1116497 1 1 2009-03-24 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2009-03-24 13:00:15.277 NULL NULL NULL
5 1116569 1 1 2009-03-24 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2009-03-24 14:43:08.280 NULL NULL NULL
6 1116920 1 1 2009-03-27 00:00:00.000 NULL NULL 2014-05-17 08:46:48.020 1 2014-10-30 13:34:47.177 NULL 1 2009-03-27 17:16:35.073 NULL NULL NULL
col 位置为:
[0, 22, 34, 46, 55, 79, 103, 115, 139, 151, 175, 188, 200, 224, 265, 274]
我们如何在每个列位置将\s 替换为\t?
我正在有效地尝试将Fixed-Width 文件转换为csv
【问题讨论】:
-
你试过String.replace/4吗?它可以使用正则表达式将空格替换为逗号。
-
@AbhyuditJain,这些空间位于特定位置。这将如何运作?
-
String.replace(data, ~r{ +}, ",")
-
@AbhyuditJain 谢谢。这有效,但它在日期时间分裂
-
我没有注意到那里的空间。这将是一个棘手的正则表达式。