现在有一个字符串mystr比如是
PGB(1)       Output  Desc="AC Voltage:1" Group="AC_Grid" Max=2.0 Min=-2.0 Units=" "
PGB(2)       Output  Desc="du max"  Group="0"  Max=2.0  Min=-2.0  Units=""
PGB(3)       Output  Desc="Vdc_R1"  Group="0"  Max=2.0  Min=-2.0  Units=""首先我想把mystr连续的空格(不包括换行符\r\n)转换为制表符\t,经请教后,正则表达式可以这么写:Regex re = new Regex(@"[\u0020\u0020]+", RegexOptions.None);
但这里有很多段字符是用引号""包含的一段描述,它包含空格,比如Desc="AC Voltage:1"和Units=" ",
而这些引号中的空格,是我并不想转化成制表符的。
现在想请教,有什么办法能够保留引号内的空格字符,而对字符串mystr内其它连续空格字符均转换为制表符\t可分步完成,也可用个犀利的正则表达式完成,正则表达式我目前还没太懂,如果可以,希望能给予些些说明,谢谢!!

解决方案 »

  1.   

    连续的空格是换成一个tab还是每个空格换一个tab.
    如果每个空格换一个tab.那就循环字符串。碰到空格就换tab.如果碰到第1个引号就不判断空格。第2个引号后又开始把空格换为tab。以此类推.
    如果是连续的空格是换成一个tab再特别处理下就OK了。
      

  2.   

    Try this
     string tempStr = File.ReadAllText(@"C:\Users\M\Desktop\Test.txt", Encoding.GetEncoding("GB2312"));
                string pattern = @"(?i)(?>((['""])[^\u0020]+))?[\u0020]+";
                tempStr = Regex.Replace(tempStr, pattern, m => { 
                    if (string.IsNullOrEmpty(m.Groups[1].Value)) 
                        return "\t";
                    else 
                        return m.Value;
                });