c# - 正则表达式替换和划分

标签 c# regex string replace

我只需要从字符串中提取数字,到目前为止我没有遇到任何问题。

我使用了这段代码:

string test = "N.11 Test 11";
string example = Regex.Replace(test, @"[^\d]", "");

输出:“1111”。

那么..我怎样才能用一个符号来分隔这两个值呢?

示例:“11:11”。

(抱歉英语不好)

最佳答案

不使用 replace 的简单方法是这样的。

string test = "N.11 Test 11";
var result = string.Join(":", Regex.Matches(test, @"\d+").OfType<Match>());

请注意,最好使用 Regex 变量而不是使用像 Regex.Matches 这样的静态方法。如果您想一遍又一遍地使用相同的模式,那么每次都创建新的正则表达式并不优雅。所以这样更好。

public static Regex digits = new Regex(@"\d+");
//...
var result = string.Join(":", digits.Matches(test).OfType<Match>());

关于c# - 正则表达式替换和划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442600/

相关文章:

c# - 当 ModelState 无效时保留下拉信息

c# - OpenXML 将文本插入内容控件 Word 2007

c# - 使用 C# 将消息以 ASCII 形式写入 MQ

c++ - 为什么 `std::string str(nullptr)` 和 `std::string str=nullptr` 是错误的?有人可以详细解释原因吗?

ios - 在 Swift 中将字符串拆分为数组?

c# - 在 XML 中添加没有 xml 元素的纯文本

javascript - 我的正则表达式在在线编辑器中有效,但在 FireBug 中它会使浏览器崩溃

c++ - 正则表达式查找所有用位字段定义的结构

regex - Vim 匹配除行首字符之外的所有内容

java - 在 Java 中将数组字符串转换为字符串并返回