现在有一个字符串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可分步完成,也可用个犀利的正则表达式完成,正则表达式我目前还没太懂,如果可以,希望能给予些些说明,谢谢!!
解决方案 »
- 如何将DataRow中某一列转换成 sting数组???
- C#中DES加密
- 事件的简单问题
- 窗口hide之后再show出来触发的是什么事件?
- 请问哪位大侠知道如何通过.net操作PDF文件
- 在 datagrid 中如何只显示满足某些条件的行?
- ListView的CheckBoxes的问题
- 知道excel文件名,路径,sheet名,怎样用windows程序(c#)改变excel文件指定行的颜色???谢谢!
- [马上结贴]程序中用了水晶报表,打包后,安装到其它电脑上,提示没有keycode2.dll自么办?[十分感谢]
- 有了ArrayList,为什么还要弄一个List?
- char 数组怎么出错了?
- 保存声音 录制声音读取声音
如果每个空格换一个tab.那就循环字符串。碰到空格就换tab.如果碰到第1个引号就不判断空格。第2个引号后又开始把空格换为tab。以此类推.
如果是连续的空格是换成一个tab再特别处理下就OK了。
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;
});