有一个问题,因为我必须将字符串转换为表。我想删除多个空格,但不是全部。因此,文本中的数据返回时,它们之间会有很多空格,如下所示:
SESSIONNAME USERNAME ID STATE TYPE DEVICE\r\n
services 0 Disc \r\n
console 1 Conn \r\n
alinav 2 Disc \r\n
rdp-tcp 65536 Listen \r\n
我仍然希望保留将定义行的\ r \ n \值,并且希望保留在列下合法的空值,并且希望保留用于定义列的空格。但是我想删除多余的空格,这些空格我不想输入值中。
我试过了:
output = Regex.Replace(output, @"\s{2,}", " ", RegexOptions.Multiline);
output = output.Replace(" ", " ");
但是第一个只是删除所有内容(我需要和不需要的东西)。第二个仍然留下了太多的空间。
谢谢。
最佳答案
在您的示例中,数据由位置而不是字符定界;那是对的吗?如果是这样,则应按位置提取;就像是:
foreach (string s in output.Split())
{
var sessionName = s.Substring(0, 18).Trim();
var userName = s.Substring(18, 19).Trim();
var id = Int32.Parse(s.Substring(37, 8).Trim());
var whateverType = s.Substring(45, 12).Trim();
var device = s.Substring(57, 6).Trim();
}
当然,您需要进行正确的错误检查,并且可能应该将字段宽度放入数组中并计算位置,而不是像我所示的那样对其进行硬编码。
关于c# - C#用1个空格替换多个空格,保留特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24923689/