如何用正则表达式将空格替换为指定字符?

6
我搜寻了很多问题和答案,但都是冗长且复杂的表达方式。现在我想要将字符串中的所有空格替换掉,我知道可以使用正则表达式来完成此操作,但我对正则表达式和如何使用它来用逗号(,)替换所有的空格缺乏足够的了解。我已经查看了一些链接,但并没有得到确切的答案。如果你有类似这样的问题或回答的链接,请告诉我。
我的字符串定义如下:
string sText = "BankMaster      AccountNo              decimal      To   varchar";

以下是应该返回的结果。
"BankMaster,AccountNo,decimal,To,varchar"

完整代码:

string sItems = Clipboard.GetText();
string[] lines = sItems.Split('\n');
for (int iLine =0; iLine<lines.Length;iLine++)
{
    string sLine = lines[iLine];
    sLine = //CODE TO REPLACE WHITE SPACE WITH ','
    string[] cells = sLine.Split(',');

    grdGrid.Rows.Add(iLine, cells[0], cells[1], cells[2], cells[4]);
}

详细信息

我有一个包含16000行的列表,所有行都是与上面给出的示例相同格式化的。因此,我打算使用正则表达式而不是循环和递归函数调用。如果您有任何其他方法可以使这个过程比正则表达式更快,请告诉我。


我可以问一下,为什么你想要使用正则表达式来做这件事呢?使用单个循环会更有效率。 - korhner
1
Regex.Replace(sText, @"\s", ","); < 这个? - Jekyll
@korhner 我的列表中有超过16000行,我也必须将所有这些行进行转换。 - Shell
@korhner 我不知道哪种方法更快。如果您有任何建议以最短的时间完成此操作,那将不胜感激。 - Shell
5个回答

13
string result = Regex.Replace(sText, "\\s+", ",");

\s+代表“捕获任何类型的连续空白字符”。

正则表达式引擎将空格 ()、制表符 (\t)、换行符 (\n) 和回车符 (\r) 视为空白字符。


1
string a = "Some    text  with   spaces";
Regex rgx = new Regex("\\s+");
string result = rgx.Replace(a, ",");

Console.WriteLine(result);

上述代码将把所有的空格替换为 ',' 字符。

0

试试这个:

string str = "BankMaster      AccountNo              decimal      To   varchar";
StringBuilder temp = new StringBuilder();
str=str.Trim(); //trim before logic to avoid any trailing/leading whitespaces.
foreach(char ch in str)
{
          if (ch == ' ' && temp[temp.Length-1] != ',')
            {
                temp.Append(",");
            }
            else if (ch != ' ')
            {
                temp.Append(ch.ToString());
            }
}
  Console.WriteLine(temp);

输出:

BankMaster,AccountNo,decimal,To,varchar

0

试试这个:

sText = Regex.Replace(sText , @"\s+", ",");

1
现在它无法编译。 - J0HN
我忘记了@!呵呵呵 - Oscar Bralo
1
这里有一个问题要问你:你是不是急于发布第一个答案,以至于连检查都没有做? - J0HN
我检查了我的第一个答案!“ ”、“,”然后被\s替换,我忘记了转义\呵呵,然后你纠正了我;) 谢谢!是的,你是正确的! - Oscar Bralo
1
@OscarBralo 那输出会是什么? - Shell
@Nimesh,你是对的Nimesh!现在,终于解决了..感谢你的帮助! - Oscar Bralo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接