C#中字符串的替换

Replacement of String in C#

我有一个字符串“productname-producttype-front-view.png”。我需要将其显示为“PRODUCTNAME-PRODUCTTYPE 前视图”。

到此为止了

string y = x.Replace(".png", " ").ToUpper();

现在,我卡住了...请帮忙。提前致谢

您可以使用 Path.GetFileNameWithoutExtensionString.Split 来提取标记:

string fileName = "productname-producttype-front-view.png";
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);
string[] tokens = fileNameWithoutExtension.Split('-');

现在借助 LINQ 和 String.Join:

很容易得到想要的结果
var newTokens = tokens.Select((s, index) => index >= 2 ? s : s.ToUpper());
string result = String.Join(" ", newTokens);  // puts a space between each token

您可以使用以下基于正则表达式的方法:

var line = "productname-producttype-front-view.png";
var pattern = @"^(.*)-([^-]+-[^-]+)\.[^-.]+$";
var m = Regex.Match(line, pattern);
var result = string.Format("{0} {1}", m.Groups[1].Value.ToUpper(), 
    m.Groups[2].Value.Replace("-", " "));
Console.WriteLine(result);

C# demo

它的作用:

  • 将字符串解析为初始部分和最后一个连字符之后的所有部分,仅捕获初始部分和 - 之间的 2 个子部分(不捕获将被删除的扩展名)
  • 开头部分(第 1 组)只是大写,而结尾部分 - 全部变成空格。

图案解释:

  • ^ - 字符串开始
  • (.*) - 第 1 组尽可能捕获换行符以外的任何 0+ 个字符(但产生与下一个子模式匹配的字符串的一部分)
  • - - 一个连字符
  • ([^-]+-[^-]+) - 第 2 组捕获 - 以外的 1+ 个字符,然后是 -,然后再次捕获 -
  • 以外的 1+ 个字符
  • \.[^-.]+ - 一个点后跟 .-
  • 以外的 1+ 个字符
  • $ - 字符串结尾。