c# - 仅当 C# 中没有空格时,才用空格替换正斜杠
问题描述
我有以下输入:
aaa/bbb
ccc/ ddd
eee /fff
ggg / hhh
/iii/jjj/
我想确保所有正斜杠(字符串末尾的斜杠除外)前后都有一个空格。结果将是:
aaa / bbb
ccc / ddd
eee / fff
ggg / hhh
/iii / jjj/
到目前为止,我有以下正则表达式:
(?<=\/)(?!$)
但这还远未奏效。任何帮助将不胜感激找出正确的正则表达式。语言是 C#。
解决方案
您可以使用
var output = Regex.Replace(text, @"\s*(?<!^\s*)/(?!\s*$)\s*", " / ", RegexOptions.Multiline);
查看正则表达式演示
详情:
\s*
- 零个或多个空格(?<!^\s*)
- 如果行的开头紧跟左侧的零个或多个空格,则匹配失败的负向后查找/
- 一个/
字符(?!\s*$)
- 如果有零个或多个空格紧跟在右侧的行尾位置,则匹配失败的负前瞻\s*
- 零个或多个空格。
或者,另一种变体:
var output = Regex.Replace(text, @"(?<=(?<!^)/(?!\s|$))|(?=(?<!^|\s)/(?!$))", " ");
请参阅此正则表达式演示。
详情:
(?<=(?<!^)/(?!\s|$))
- 紧跟在 a 之后的位置/
,既不在字符串的开头也不在字符串的结尾,并且后面没有空格|
- 或者(?=(?<!^|\s)/(?!$))
- a 之前的位置/
,既不在字符串的开头也不在字符串的结尾,并且前面没有空格。
推荐阅读
- java - Kotlin 中的“and”和“or”运算符是什么?
- c# - 无法从服务器外部访问 linux 上的 asp.net core mvc 应用程序
- .net-core - Mono 上 F# NetStandard2.0 / .NET Core 2.0 的确定性构建
- bigcommerce - 通过 Bigcommerce API 获取所有页面,包括子页面
- angular - 角度材料 mat-cell 内容基于另一个 mat-cell 值而变化
- f# - Intellisense 在 Visual Studio for Mac 中无法识别来自 C# 的 F# 库
- vue.js - 使用嵌套路由时 Nuxt 应用程序冻结
- angular - 没有主题应用于 Angular 代码中的 angular2-multiselect-dropdown
- sql - 加入多个表以获得发表评论
- unity3d - 跨平台输入控制器在移动设备上不起作用