我在辅助扩展程序中有以下 :
return Regex.Replace(str,
"(?<=[a-z])(?<x>[A-Z])|(?<=.)(?<x>[A-Z])(?=[a-z])|(?<=[^0-9])(?<x>[0-9])(?=.)",
" $1");
哪个会有效地采取
WhateverIPutInToIt
并渲染
无论我投入什么
除了我不想把每个正确的词大写。但是,如果我没有大写,则不会使用空格进行渲染。
我以为我会尝试采取像
这样的东西Whatever_I_put_into_it
渲染我想要的东西。我无法弄清楚如何使用正则表达式(如果它甚至可能)去掉“下划线”字符并用空格替换它。
任何帮助?
更新
对不起,不清楚。这是一个帮助扩展,用于将我拥有的枚举转换为可读的内容。我正在为我的下拉列表和复选框列表使用帮助器。我有超过10个枚举,并且每个人单独做一个会很痛苦。希望我能够将顶部的Regex.Replace
代码修改为能够实现我目标的东西。
请注意,如果我这样做
YouHave9OrMore
以上Regex.Replace
将吐出(它将数字“9”分开)
你有9个或更多
谢谢大家的快速评论。
答案 0 :(得分:2)
你不应该需要正则表达式:
return str.Replace("_"," ");
答案 1 :(得分:0)
您是否使用MatchEvaluator参数尝试了正则表达式?
var finalstr = Regex.Replace(
"WhateverIPutInToIt",
"(?<=[a-z])(?<x>[A-Z])|(?<=.)(?<x>[A-Z])(?=[a-z])|(?<=[^0-9])(?<x>[0-9])(?=.)",
me => " " + me.Value.ToLower() // <----
);
这将输出Whatever i put in to it
。
OR
YouHave9OrMore ==&gt; You have 9 or more
如果你把它作为一种扩展方法,你可以像这样使用它
var finalstr = System.IO.SearchOption.TopDirectoryOnly.GetString();
public static class MyExtensions
{
public static string GetString(this Enum en)
{
return Regex.Replace(en.ToString(), "(?<=[a-z])(?<x>[A-Z])|(?<=.)(?<x>[A-Z])(?=[a-z])|(?<=[^0-9])(?<x>[0-9])(?=.)", me => " " + me.Value.ToLower());
}
}
答案 2 :(得分:0)
您是否尝试在网址中表示网页标题,然后将其转换回来以便在网页上以清晰的形式呈现?在这种情况下,您应该使用HttpUtility.UrlPathEncode
和HttpUtility.UrlDecode
方法。这些会分别将"Whatever I Put In To It"
转换为"Whatever%20I%20Put%20In%20To%20It"
并返回,其他优点还包括其他不允许的字符(例如<
和>
),并且浏览器会在地址栏中正确呈现编码序列。