http://community.csdn.net/Expert/topic/5689/5689838.xml?temp=.3423731
你上次写的对,但是我发现有的 中间空格不一定是一个。
可能有两个甚至多个。
就会出现问题。求助。
------解决方案--------------------------------------------------------
这个问题应该很好解决啊,你可以循环遍历(将两个空格变成一个空格),然后再使用晓风的方法
------解决方案--------------------------------------------------------
很有规律,可以用正则表达式试试:
string sourceString = @ "出售 黄浦区 中山南路200弄 四室二厅 南 28 209.58 880.00 万元
出售 黄浦区 中山南路398弄 四室三厅 南 32 288.55 980.00 万元
出售 黄浦区 中山南路200弄 三室二厅 南 32 170.72 550.00 万元
出售 黄浦区 陆家浜路521弄 二室二厅 南 33 84.13 140.00 万元
出售 黄浦区 多稼路208号 三室二厅 南 24 126.26 147.00 万元
出售 黄浦区 陆家浜路521弄 二室二厅 南 33 123.19 180.00 万元
出售 黄浦区 陆家浜路305弄 二室二厅 南 30 122.58 177.00 万元
出售 黄浦区 陆家浜路521弄 二室二厅 南 33 123.19 215.00 万元
出售 黄浦区 中山南路398弄 二室二厅 南 31 110.97 260.00 万元
出售 黄浦区 中华路88弄 三室二厅 南 32 155.29 350.00 万元
出售 黄浦区 陆家浜路305弄 三室二厅 南 31 137.56 250.00 万元
出售 黄浦区 陆家浜路305弄 三室二厅 南 30 140.56 240.00 万元
出售 黄浦区 陆家浜路305弄 三室二厅 南 30 136.33 190.00 万元
出售 黄浦区 中山南路398弄 二室二厅 南 18 116 235.00 万元
出售 黄浦区 中山南路398弄 二室二厅 南 32 164.98 550.00 万元 ";
string pattern = @ "(? <=出售\s[^\s]*\s)[^\s]+ ";
System.Text.RegularExpressions.Match result = Regex.Match(sourceString,pattern,System.Text.RegularExpressions.RegexOptions.IgnoreCase|System.Text.RegularExpressions.RegexOptions.Multiline);
while(result.Success)
{
WL( "正确: " + result.Value);//输出
result = result.NextMatch();
}
-----------------------------------------------
msn:bdbox@hotmail.com
请给我个与您交流的机会
------解决方案--------------------------------------------------------
1。
呃,我的第一次竟然不期而来了
................................如此深情的被召唤了一次 ^_^
2。
关于多个空格这个问题,jimu8130(给老子跪下来唱征服) 已经说了思路和方向了,
3。
但是,我希望原始数据的多个空格是指用来分隔【数据字段】的空格,而不是【某个字段数据】内部的空格,否则就无法区分了,比如
出现 【中山 南 路 398弄】 这样的数据,即使是一个空格,我的方法也挂了,无能为力 @_@
4。
对于 3 的样本数据,目前我没有想到很好的解析方式,有点“傻帽”而又最直接的方式:一个一个字符的读取,碰到空格的时候,判断前一个字符是否为 【售/区/弄/厅/南/某个数字/万元】(分析原始数据,可以发现这些特殊的“标识”字符),进而分隔特定数据字段
说白了,你还是得分析原始数据,找出特定的数据规律,以及关键性的标识字符,才可解析
5。
简单空格处理:
> > >
// ...
string str = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, @ "\\n*\\r* ", @ "\n "); // 其实原始版本这里,我已经考虑多个换行符号的情况
// +
str = System.Text.RegularExpressions.Regex.Replace(str, @ "\s+ ", " ");
// ...
Hope helpful.