regex 如何删除“w o r d”字母之间的空格

0sgqnhkj  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(128)

我有一些文本,其中许多单词的字母之间有空格。所以,我需要一个脚本,可以删除这些空格。例如,字符串“Hello,this is a B e a ut i f ul day”变为“Hello,this is a beautiful day”
我试过这样的东西:

string input="Hello, this is a  b e a u t i f u l  day";
string pattern = @"\b(\w\s\w)+\b";

string result = Regex.Replace(input, pattern, match =>
 {
   string wordWithSpaces = match.Value;
   string wordWithoutSpaces = wordWithSpaces.Replace(" ", "");
   return wordWithoutSpaces;
 });

但不能正常工作

0md85ypi

0md85ypi1#

如果你可以依靠空格扩展的单词每边有2个空格,你可以用它来确定正确的位置

string input = "Hello, this is a  b e a u t i f u l  day";
string pattern = @"\s(\s[\w\s]+\s)\s";
string result = Regex.Replace(input, pattern, match =>
{
    string wordWithSpaces = match.Value;
    string wordWithoutSpaces = wordWithSpaces.Replace(" ", "");
    return $" {wordWithoutSpaces} ";
});

现场示例:https://dotnetfiddle.net/bBIoMl

x4shl7ld

x4shl7ld2#

你这样试试:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "Hello, this is a  b e a u t i f u l  day";
        string result = Regex.Replace(input, @"\b(\w)(?:\s\w)+\b", match =>
        {
            string matchedText = match.Value;
            string wordWithoutSpaces = Regex.Replace(matchedText, @"\s", "");
            return wordWithoutSpaces;
        });

        Console.WriteLine(result);
    }
}

输出:

Hello, this is a  b e a u t i f u l  day => Hello, this is a  beautiful  day

说明:
**@"\B(\w)(?:\s\w)+\B”**匹配字母间有空格的单词。
**(?:\s\w)+**part捕获一个或多个空格后跟一个单词字符。

Regex.Replace回调函数中,我再次使用Regex.Replace删除匹配单词中的所有空格。

相关问题