2 回答

TA貢獻(xiàn)1785條經(jīng)驗 獲得超4個贊
您可以使用Regex.Split然后用您喜歡的任何標(biāo)簽包裝結(jié)果數(shù)組/列表中的每個奇數(shù)元素:
var s = "All men like widgets but some men like widgets more than others";
var chunks = Regex.Split(s, @"(\s*\bwidgets\b\s*)");
var result = string.Concat(chunks.Select((i, index) => index % 2 == 0 ? $"<b>{i}</b>" : i));
Console.WriteLine(result);
// => <b>All men like</b> widgets <b>but some men like</b> widgets <b>more than others</b>
請參閱C# 演示。
該(\s*\bwidgets\b\s*)模式匹配并捕獲到第 1 組 0+ 個空格、整個單詞widgets和 0+ 個空格。這些匹配項保留在結(jié)果數(shù)組中,因為它們已被捕獲。每個奇數(shù)元素都是一個不匹配的子串。
如果您不想用標(biāo)簽包裝空白的不匹配項,請?zhí)砑宇~外的!string.IsNullOrWhiteSpace(i)檢查:
var chunks = Regex.Split(s, @"(\s*\bwidgets\b\s*)");
var result = string.Concat(
chunks.Select((i, index) =>
index % 2 == 0 && !string.IsNullOrWhiteSpace(i) ?
$"<b>{i}</b>" : i));
請參閱此 C# 演示。

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊
正如艾哈邁德建議你應(yīng)該使用Regex.Spilt()
這是您的用例的示例
var op = Regex.Split("All men like widgets but some men like widgets more than others", @"widgets");
輸出
//All men like
//but some men like
//more than others
更新
您可以使用以下代碼
string op = GetTagsAroud("All men like widgets but some men like widgets more than others", @"widgets");
方法
static string GetTagsAroud(string input, string splitText)
{
var matches = Regex.Split(input, splitText);
StringBuilder output = new StringBuilder();
foreach (string match in matches)
{
output.Append("<b>");
output.Append(match.Trim());
output.Append("</b>");
}
return output.ToString();
}
- 2 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報