正则表达式和替换字符串的特定字段

时间:2012-01-06 22:07:32

标签: c# regex regex-negation

我需要对动态生成的字符串进行一些修改;

字符串示例

  

产品[279]电动喷漆器[21]喷枪设备[109]喷涂设备[23]迷你空气压缩机[33]喷砂枪[5]喷漆罐[9]空气喷枪[26]气动工具/气动工具[26]轮胎充气枪[10]气动铆钉[6]手动工具[7]梳子/毛刷[4]

我想从头开始删除“产品[279] ”(除了数字之外总是相同)并替换字符串的其余部分,例如“电动喷漆器[21] - 喷枪设备[109] - ......“

3 个答案:

答案 0 :(得分:1)

<强> Demo

String sample = @"Products [279] Electric Paint Sprayer [21] Airbrush Equipment [109] Spray Tanning Equipment [23] Mini Air Compressor [33] Sand blasting gun [5] Paint Tank [9] Air Spray Gun [26] Pneumatic tools/Air tools [26] Tire Inflating gun [10] Air Riveter [6] Hand Tools [7] Comb/Hair Brush [4]";

// Remove "Products [#] "
sample = Regex.Replace(sample, @"^Products \[\d+\]\s*", String.Empty);

// Add hyphens
sample = Regex.Replace(sample, @"(\[\d+\])(?=\s*\w)", @"$1 - ");
// the (?=\s*\w) makes sure we only add a hyphen when there's more information
// ahead (and not a hyphen to the end of the string)

结果:

  

电动喷漆器[21] - 喷枪设备[109] - 喷涂设备[23] - 迷你空气压缩机[33] - 喷砂枪[5] - 喷漆罐[9] - 空气喷枪[26] - 气动工具/气动工具[26] - 轮胎充气枪[10] - 气动铆钉[6] - 手动工具[7] - 梳子/毛刷[4]

答案 1 :(得分:0)

您可以使用String.Remove或String.Replace来执行此操作。请记住,这不会修改该字符串,但会返回一个新字符串。

哦,要找到Products [XXX],你可以使用String.SubString(0,String.IndexOf(']'));查找包含']'的第一个实例的字符串。

答案 2 :(得分:0)

请按以下步骤操作:

  • 在没有任何内容的情况下替换^\w+\s+\[\d+\]\s+(在示例中删除Products [279]<space>);
  • 将全球(?<\])(?=\s+.)替换为<space>-