String C语言中字符串的替换#
我有一个字符串“productname producttype front view.png”。我需要将其显示为“PRODUCTNAME-PRODUCTTYPE前视图”” 我已经做了这么多了String C语言中字符串的替换#,string,c#-4.0,replace,substring,console-application,String,C# 4.0,Replace,Substring,Console Application,我有一个字符串“productname producttype front view.png”。我需要将其显示为“PRODUCTNAME-PRODUCTTYPE前视图”” 我已经做了这么多了 string y = x.Replace(".png", " ").ToUpper(); 现在,我被困住了…请帮助我。提前感谢您可以使用Path.GetFileNameWithoutExtension和String.Split提取令牌: string fileName = "productname-pro
string y = x.Replace(".png", " ").ToUpper();
现在,我被困住了…请帮助我。提前感谢您可以使用
Path.GetFileNameWithoutExtension
和String.Split
提取令牌:
string fileName = "productname-producttype-front-view.png";
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);
string[] tokens = fileNameWithoutExtension.Split('-');
现在,在LINQ和字符串的帮助下,很容易获得所需的结果。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);
见
它的作用是:
- 将字符串解析为初始部分以及除1个连字符外的最后一个部分之后的所有内容,仅捕获初始部分和
之间的2个子部分(不捕获将删除的扩展名)-
- 开头部分(第1组)仅大写,而后面部分将所有
转换为空格-
-字符串开始^
-组1尽可能捕获除换行符以外的任何0+字符(但生成与下一个子模式匹配的字符串部分)(.*)
-连字符-
-第2组捕获除([^-]+-[^-]+)
以外的1+个字符,然后捕获-
,再次捕获除-
以外的1+个字符-
-一个点,后跟1+字符,而不是\.[^-.]+
和-
-字符串结束$