解析城市,州,邮编

HLeyes

成员
已加入
2016年2月10日
留言内容
15
编程经验
10+
我有一个文本福彩12选5走势图,其中包含名称,地址,城市状态邮政编码行和其他行。每个记录不一定占用一定数量的行,例如六行(就像总是有6行的标签格式)。无论记录中有多少空白行或其他行,有没有办法能够检测到具有城市,州,邮政编码的行?一旦我能检测到它,解析该行就没问题了。提前致谢。请参见下面的示例:

约翰·布朗
123大道大道
迈尔斯堡,佛罗里达州33913

苏西·史密斯
第一街456号
套房5
奥兰多(FL)44444
致电#32

丹尼尔·布恩
迈阿密高速公路999号
盖恩斯维尔,FL 84848
一些线
一些第2行

...



HLeyes
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,051
地点
挪威
编程经验
10+
如果存在该行唯一的文本模式,则可以使用正则表达式(regex)。
根据您的示例,该模式可能是:
C#:
(some text), a comma, a space, a two letter uppercase state identifyer (A-Z), a space, 5 digits zip
在正则表达式中可以表示为:
C#:
.+, [A-Z]{2} \d{5}
.NET Framework正则表达式|微软文档
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
My advice would be to seek an alternative way of getting these names and addresses. Like, however did they get into a textfile to begin with? If this is something you can control and prevent, seek an alternative, such as a Persons Class that you can add each person to and manage their data from there. Is this something you could do or are you forced to work with a text file?

由于福彩12选5走势图的当前结构方式,如果没有正则表达式很难做您想做的事情,这在这里很有用,而且绝对比我将要提出的替代方案要好。

但是,如果您不想使用正则表达式,则福彩12选5走势图将需要具有某种结构。例如,您的文本福彩12选5走势图必须采用以下格式::
姓名:约翰·布朗
地址:123 Gateway Blvd
下一条地址行:迈尔斯堡
邮政编码:FL 33913

等等...然后当您的(假定)流阅读器读取每一行时,您将检查正在执行的行是否首先不是空行,并且还包含Name:如果是,则使用string.Substring()和返回名称值的新字符串,不带"Name:"发短信,并用您的真实姓名做您所希望的。然后,您将对剩余的行重复该循环。我在第一行所说的是解决这一问题的正确方法。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
另外,如果您可以保证在文本福彩12选5走势图中每个名称和地址条目中只有6行,然后再点击新的空行,则可以执行以下操作:
C#:
            var pathDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            var fileName = "CFile";
            var fileEtx = ".txt";
            var incrementer = 0;
            using (StreamReader sr = new StreamReader(Path.Combine(pathDir, string.Concat(fileName, fileEtx))))
            {
                var eachLine = string.Empty;
                while ((eachLine = sr.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(eachLine))
                    {
                        incrementer++;
                        /* We have read the first set of names and addresses
                           We have also read the first set of lines up until we hit an empty line */

                        /* This is where you do what you want with each of the six lines */ 
                        Debug.WriteLine(eachLine);

                        if (incrementer == 6)
                        {
                            incrementer = 0; /* Start the process over. Do nothing else here */
                        }
                    }
                    else if (incrementer == 6)
                    {
                        incrementer = 0;
                        /* Start the process over. Do nothing else here */
                    }
                }
            }
但是我也不认为这是一个很好的方法,无论它是否按计划工作并输出:
C#:
约翰·布朗
123 Gateway Blvd.
Fort Myers
FL 33913
Some line 1
Some line 2

Susie Smith
456 First Street
Suite 5
Orlando, FL 44444
call #32
some line

Daniel Boone
999 Miami Highway
盖恩斯维尔,FL 84848
some line
some line 2
some line 3
Console Output:
约翰·布朗
123 Gateway Blvd.
Fort Myers 
FL 33913
Some line 1
Some line 2
Susie Smith
456 First Street
Suite 5
Orlando, FL 44444
call #32
some line 
Daniel Boone
999 Miami Highway
盖恩斯维尔,FL 84848
some line
some line 2
some line 3
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
正则表达式不会受到以下因素的欺骗:

猴子代码
洛基河大道500号。
5楼,RM 53321
华盛顿州西雅图98106
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
打勾如何?

如果OP实际上可以使人类更好 不是 使用文本福彩12选5走势图存储数据,无论他们从何处接收数据。 @HLeyes 这是您的选择吗?

如果OP的唯一前进方法是使用文本福彩12选5走势图,则在设置了正确的模式的情况下,正则表达式将是下一个最佳解决方案。
 
已加入
2011年4月23日
留言内容
177
地点
密歇根州兰辛;美国
编程经验
10+
我有一个文本福彩12选5走势图,其中包含名称,地址,城市状态邮政编码行和其他行。每个记录不一定占用一定数量的行,例如六行(就像总是有6行的标签格式)。无论记录中有多少空白行或其他行,有没有办法能够检测到具有城市,州,邮政编码的行?一旦我能检测到它,解析该行就没问题了。提前致谢。请参见下面的示例:

约翰·布朗
123大道大道
迈尔斯堡,佛罗里达州33913

苏西·史密斯
第一街456号
套房5
奥兰多(FL)44444
致电#32

丹尼尔·布恩
迈阿密高速公路999号
盖恩斯维尔,FL 84848
一些线
一些第2行

...



HLeyes
至少可以将其作为数据福彩12选5走势图(例如xml,定界福彩12选5走势图或CSV)获得吗?最好将地址的所有部分都作为自己的字段。
例如,如果您可以获得包含以下列(字段)的福彩12选5走势图:FirstName | LastName | Address1 | Address2 | City | State | Zip | Other1 | Other2
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
正则表达式方法可能会受到有关楼层和房间号的第二个地址行的欺骗,因为它满足了城市,州和邮政编码正则表达式的条件。
 
最佳 底部