我有一个文本块,我希望得到它的行而不会丢失最后的\ r和\n.现在,我有以下(次优代码):
string[] lines = tbIn.Text.Split('\n')
.Select(t => t.Replace("\r", "\r\n")).ToArray();
Run Code Online (Sandbox Code Playgroud)
所以我想知道 - 有更好的方法吗?
接受的答案
string[] lines = Regex.Split(tbIn.Text, @"(?<=\r\n)(?!$)");
Run Code Online (Sandbox Code Playgroud) 当我从Visual Studio的加载项菜单中删除加载项时,它不会从内存中卸载.有谁知道我是否可以为我的加载项(在C#中)编写一些强制卸载的代码.这甚至可能,还是我必须重启VS?
我有一个应用程序,重新处理HTML,以便做出漂亮的排版.现在,我想把它放在网上让用户输入他们的文字.所以这就是问题:我非常确定我想要删除SCRIPT标签,以及关闭像</ form>这样的标签.但是我应该删除什么以使其完全安全?
我正在尝试在F#中编写一个字符串处理函数,如下所示:
let rec Process html =
match html with
| '-' :: '-' :: '>' :: tail -> ("→" |> List.of_seq) @ Process tail
| head :: tail -> head :: Process tail
| [] -> []
Run Code Online (Sandbox Code Playgroud)
我的模式匹配表达式对几个元素有点难看(整个'-' :: '-' :: '>'事情).有没有办法让它变得更好?另外,如果我要处理大型文本,我的效率是多少?或者还有另一种方式吗?
澄清:我的意思是,例如,能够写出这样的东西:
match html with
| "-->" :: tail ->
Run Code Online (Sandbox Code Playgroud) 我正在使用Spark视图引擎,并希望本地化该网站.针对"传统"MVC视图引擎描述的方法不起作用.有没有人这样做过?任何帮助,将不胜感激.
我正在使用MathML DTD使用System.Xml.Linq解析MathML.虽然普通的MathML内容得到了很好的识别,System.Xml.Linq.但DTD中的include会被忽略,我会收到错误.这是我正在使用的代码:
if (!string.IsNullOrWhiteSpace(mathML))
{
try
{
const string preamble =
"<!DOCTYPE mml:math PUBLIC \"-//W3C//DTD MathML 2.0//EN\"\n" +
"\"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd\" [\n" +
"<!ENTITY % MATHML.prefixed \"INCLUDE\">\n" +
"<!ENTITY % MATHML.prefix \"mml\"> \n" +
"]>";
var parsed = Parser.Parse(preamble + Environment.NewLine + mathML);
textEditor.Text = printed;
lblStatus.Caption = "MathML successfully translated.";
}
catch (Exception e)
{
lblStatus.Caption = "Cannot translate text. " + e.Message;
}
}
Run Code Online (Sandbox Code Playgroud)
解析器就是这么做的MMLEXTRA.任何帮助赞赏!
我想将项目更新插入(更新或插入)到一个map<int,shared_ptr<PortfolioEntry>>结构中。我当前的代码类似于以下内容:
auto existing = positions.find(id);
if (existing == positions.end())
{
positions[id] = make_shared<PortfolioEntry>(id, amount, price);
}
else
{
// update positions[id]
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道这是否是正确的做事方式。有find()效率吗?分配给positions[id]正确的方法来做到这一点,还是应该使用一些std::move构造?
在C++中,如果我写的话
token make_token() { return token{}; }
Run Code Online (Sandbox Code Playgroud)
然后按如下方式使用它
void use_token()
{
make_token();
// extra code
}
Run Code Online (Sandbox Code Playgroud)
在没有为变量赋值的情况下,token析构函数会在执行额外代码之前触发.如何让析构函数只在函数结束时触发而不必创建变量?
注意:我想完全避免变量.我知道我可以做auto& t = make_token()或类似,但我想通过返回没有立即触发析构函数的东西(我不知道是什么)来避免这种情况.
为什么我想要这个:基本上,在我的应用程序(编程语言的编译器)中,我将这些东西称为令牌.令牌的构造函数可以放置一个{和缩进,然后它的析构函数可以放入}和取消缩进.我认为设置按值返回这些标记的函数是个好主意,但我实际上并不想将它们分配给任何值,因为标记是无用的并且没有函数.
为了减轻混乱,我token是不是一个词法标记.我用这项工作token代替工作cookie.它意味着在构造函数中执行某些操作,等到其作用域结束,然后在其析构函数中执行某些操作.而已.顺便说一句,如果我用C#写这个,我会写类似的东西
using (make_token())
{
// my code here
}
Run Code Online (Sandbox Code Playgroud)
它会按预期工作.但事实证明,在C++中,这么简单的事情很难实现.
是否可以拦截visual studio的粘贴事件以转换粘贴的文本?我知道我可以编写自己的命令来执行智能粘贴,但对于大多数人来说,将此命令映射到键盘快捷键是一件苦差事.此外,大多数人习惯使用Ctrl + V. 我有机会在那里插入我的商品吗?
c# ×3
c++ ×2
f# ×2
vsx ×2
.net ×1
add-in ×1
asp.net-mvc ×1
destructor ×1
dtd ×1
events ×1
html ×1
linq-to-xml ×1
list ×1
localization ×1
map ×1
mathml ×1
parsing ×1
security ×1
shared-ptr ×1
split ×1
stl ×1
string ×1
typography ×1
variables ×1
xml ×1