我有一个字符串" productname-producttype-front-view.png "。我需要将其显示为" PRODUCTNAME-PRODUCTTYPE前视图"。
我已经走了这么多
string y = x.Replace(".png", " ").ToUpper();
现在,我被困了......请帮助。提前致谢
答案 0 :(得分:1)
您可以使用Path.GetFileNameWithoutExtension
和String.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
答案 1 :(得分:1)
您可以使用以下基于正则表达式的方法:
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组捕获除换行符之外的任何0+个字符(但产生与下一个子模式匹配的字符串的一部分)-
- 连字符([^-]+-[^-]+)
- 第2组捕获除-
以外的1个字符,然后是-
,并再次捕获除-
以外的1个字符\.[^-.]+
- 除.
和-
$
- 字符串结束。