从字符串末尾复制数字

时间:2017-03-29 10:11:35

标签: c# excel

这里有一些我无法理解的东西,我希望得到一些帮助:)

目前,我在Excel电子表格中有字段,其中包含客户的地址和电话号码。但是,电话号码位于地址字段中每个字符串的末尾,例如

  

姓名,地址,有线电话,移动

     

Johnson,Oxton Road 2 Moreton CH45 9JB 07854213658 721 2569,

我需要它去

  

Johnson,Oxton Road 2 Moreton CH45 9JB,07854213658,721 2569

有什么想法吗?电话号码始终位于字符串的末尾

我也可以写c#,但我无法弄清楚从哪里开始

先谢谢你们

2 个答案:

答案 0 :(得分:0)

如果您总是有地址(空间)固定电话(空间)移动

和移动设备始终是###(空格)####。

这是使用Excel执行此操作的方法。

A1: Johnson,2 Oxton Road Moreton CH45 9JB 07854213658 721 2569,

您可以获取字符串中的空格数:B1: =len(A1)-len(substitute(A1," ",""))

此后,您可以使用逗号替换正确的空格,再次使用替换:

C1: =substitute(A1," ",",",B1-2)
D1: =substitute(C1," ",",",B1-2)

我们两个都在进行B1-2,因为我们要替换的第二个空间已经从第7个空间变为第6个空间。

您仍然需要删除最后一个逗号,这可以通过以下方式完成:E1: =left(D1,len(D1)-1)

这可以嵌套:

B1: =left(substitute(substitute(A1," ",",",len(A1)-len(substitute(A1," ",""))-2)," ",",",len(A1)-len(substitute(A1," ",""))-2),len(A1)-1)

注意我只是使用旧字符串的长度,因为用两个逗号替换两个空格时长度不应该改变。

答案 1 :(得分:0)

在这里试试regex。它很难解析,但它对于一次解析文本数据非常有用:

var userInfo = "Johnson,2 Oxton Road Moreton CH45 9JB 07854213658 721 2569,";
var regEx = new System.Text.RegularExpressions.Regex("(?<address>.+) (?<landline>\\d{11}) (?<mobile>(\\d{3} \\d{4})|(\\d{7})),$");
regEx.Replace(userInfo, "${address},${landline},${mobile}")

结果将是:

  

&#34; Johnson,Oxton Road 2 Moreton CH45 9JB,07854213658,721 2569&#34;

您可能需要为数据调整正则表达式。但它必须比手动编辑快得多。

您可以找到您的功能regexlib

相关问题