Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式替换函数(C#)在字符串中的单词和数字之间提供空格_C#_Regex - Fatal编程技术网

使用正则表达式替换函数(C#)在字符串中的单词和数字之间提供空格

使用正则表达式替换函数(C#)在字符串中的单词和数字之间提供空格,c#,regex,C#,Regex,这是一个包含单词和数字(包括日期和十进制格式)的字符串,它们之间没有空格。我想在单词和数字之间留出空间。我的输出应该是字符串而不是数组,应该是这样的 Membernumber350005Calculationdate04/08/2015Casenumber880898Case0.12Amount546.3Fors 我尝试了下面的代码。我成功地过滤了日期和十进制格式,并在它们周围留出了空间。但我被困在给文字留出空间 Membernumber 350005 Calculationdate 04/0

这是一个包含单词和数字(包括日期和十进制格式)的字符串,它们之间没有空格。我想在单词和数字之间留出空间。我的输出应该是字符串而不是数组,应该是这样的

Membernumber350005Calculationdate04/08/2015Casenumber880898Case0.12Amount546.3Fors
我尝试了下面的代码。我成功地过滤了日期和十进制格式,并在它们周围留出了空间。但我被困在给文字留出空间

Membernumber 350005 Calculationdate 04/08/2015 Casenumber 880898 Case 0.12 Amount 546.3 Fors
有了这个代码,我可以做到这一点

string s = "Membernumber350005Calculationdate04/08/2015Casenumber880898Case0.12Amount546.3Fors";
string SpaceAroundDate = Regex.Replace(s, @"(\d+/\d+/\d+)", @" $1 ");
string SpaceAroundDecimal = Regex.Replace(SpaceAroundDate, @"(\d+\.\d+)", @" $1 ");
然后我写了这个,在单词和数字之间留出空间

Membernumber35000520Calculationdate 04/08/2015 Casenumber880898Case 0.12 Amount 546.3 fors
但它不起作用。希望我已经提供了足够的信息。提前谢谢

给你

string SpaceAroundWord = Regex.Replace(SpaceAroundDecimal, @"([A-Za-z]\w+)([0-9]\d+)([A-Za-z]\w+)", @"$1 $2 $3");

如果没有日期和浮动的混合格式,可以尝试
Regex.Replace(s,@“\d{2}/\d{2}/\d{4}\d+(?:\。\d+)”,“$&”)
。澄清一下:
/
是一个文本
/
。要转义特殊字符,需要使用反斜杠
\
。不需要在字符类中转义
,即可表示文字
。此外,此正则表达式将用空格括起任何
/
符号,而不仅仅是日期和数字。@WiktorStribiżew ok现在日期/时间/金额必须以数字开始和结束捕获组在这里是多余的,您自己不使用它,因为
$0
指的是整个匹配(我宁愿使用
$&
,但它似乎也可以使用
$0
)。此外,您不必转义
/
,因为它在.NET正则表达式中不是特殊字符。
string input = @"Membernumber350005Calculationdate04/08/2015Casenumber880898Case0.12Amount546.3Fors";
string result = Regex.Replace(input, @"([a-zA-Z]+|[0-9]+[0-9/\.]+[0-9]+)", "$& ");