小编Dmi*_*ruk的帖子

如何在保留行结尾的同时拆分字符串?

我有一个文本块,我希望得到它的行而不会丢失最后的\ 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)

.net c# string split

3
推荐指数
1
解决办法
1354
查看次数

协议缓冲区是否可用于F#?

只是好奇 - 协议缓冲区可用于F#吗?有任何警告等?

f# protocol-buffers

3
推荐指数
1
解决办法
1761
查看次数

Visual Studio和加载项卸载

当我从Visual Studio的加载项菜单中删除加载项时,它不会从内存中卸载.有谁知道我是否可以为我的加载项(在C#中)编写一些强制卸载的代码.这甚至可能,还是我必须重启VS?

c# vsx extensibility add-in visual-studio

2
推荐指数
1
解决办法
825
查看次数

除了<script>标签之外,我应该删除哪些内容以确保用户输入的HTML是安全的?

我有一个应用程序,重新处理HTML,以便做出漂亮的排版.现在,我想把它放在网上让用户输入他们的文字.所以这就是问题:我非常确定我想要删除SCRIPT标签,以及关闭像</ form>这样的标签.但是我应该删除什么以使其完全安全?

html security typography

2
推荐指数
2
解决办法
503
查看次数

F#中列表开始的模式匹配更简单的方法

我正在尝试在F#中编写一个字符串处理函数,如下所示:

let rec Process html =
  match html with
  | '-' :: '-' :: '>' :: tail -> ("&rarr;" |> 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)

f# parsing list pattern-matching

2
推荐指数
1
解决办法
1341
查看次数

如何本地化ASP.NET MVC + Spark应用程序?

我正在使用Spark视图引擎,并希望本地化该网站.针对"传统"MVC视图引擎描述的方法不起作用.有没有人这样做过?任何帮助,将不胜感激.

globalization asp.net-mvc localization spark-view-engine

2
推荐指数
1
解决办法
654
查看次数

LINQ to XML忽略了DTD吗?

我正在使用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.任何帮助赞赏!

c# xml dtd mathml linq-to-xml

2
推荐指数
1
解决办法
1462
查看次数

将项目“更新”到 map&lt;key, shared_ptr&lt;foo&gt;&gt; 的正确方法

我想将项目更新插入(更新或插入)到一个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++ stl map shared-ptr

2
推荐指数
1
解决办法
896
查看次数

防止早期物体破坏

在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++中,这么简单的事情很难实现.

c++ variables destructor object-lifetime

2
推荐指数
2
解决办法
790
查看次数

拦截Visual Studio粘贴操作

是否可以拦截visual studio的粘贴事件以转换粘贴的文本?我知道我可以编写自己的命令来执行智能粘贴,但对于大多数人来说,将此命令映射到键盘快捷键是一件苦差事.此外,大多数人习惯使用Ctrl + V. 我有机会在那里插入我的商品吗?

vsx events visual-studio-2010 vs-extensibility

1
推荐指数
1
解决办法
342
查看次数