因此,对于java中的正则表达式,我想编写一个正则表达式,当且仅当模式前面没有某些字符时才匹配.例如:
String s = "foobar barbar beachbar crowbar bar ";
Run Code Online (Sandbox Code Playgroud)
如果bar之前没有foo,我想匹配.所以输出将是:
barbar
beachbar
crowbar
bar
Run Code Online (Sandbox Code Playgroud)
我知道这可能是一个非常简单的问题.我正在努力学习正则表达式,但与此同时我需要一些工作才能正常工作.
在Java中,我LinkedHashMap用于此目的.Java的文档LinkedHashMap很清楚,它具有"可预测的迭代顺序",我在Scala中需要相同的东西.
Scala有ListMap和LinkedHashMap,但他们这样做究竟是什么文件很糟糕.
问题:Scala LinkedHashMap或ListMap实现是否用于此目的?如果没有,除了LinkedHashMap直接使用Java之外还有哪些其他选项?
这种情况有效:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (println(_))
Run Code Online (Sandbox Code Playgroud)
然而,这不是:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (throw new Exception(_.toString))
Run Code Online (Sandbox Code Playgroud)
编译以此错误结束:
error: missing parameter type for expanded function ((x$4) => x$4.toString)
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样写它再次编译:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (s => throw new Exception(s.toString))
Run Code Online (Sandbox Code Playgroud)
我相信有合理的解释;)
Scala,in Predef,定义支持->和?(这里清理了一下):
final class ArrowAssoc[A](val __leftOfArrow: A) extends AnyVal {
def -> [B](y: B): Tuple2[A, B] = Tuple2(__leftOfArrow, y)
def ?[B](y: B): Tuple2[A, B] = ->(y)
}
Run Code Online (Sandbox Code Playgroud)
这样可以方便地使用箭头符号而不是普通元组语法创建对:
scala> "foo" ? 42
res0: (String, Int) = (foo,42)
Run Code Online (Sandbox Code Playgroud)
可以使用类型定义和提取器轻松扩展此箭头语法(此处仅?显示):
type ?[A, B] = (A, B)
object ? { def unapply[A, B](t: (A, B)) = Some(t) }
Run Code Online (Sandbox Code Playgroud)
这允许你写下这样的东西:
"a" ? 42 match { case a ? b ? println(s"found `$a` and `$b`") }
Run Code Online (Sandbox Code Playgroud)
和:
def …Run Code Online (Sandbox Code Playgroud) HTML文本输入具有称为"maxlength"的属性,由浏览器实现,如果设置在一定数量的字符之后阻止用户输入.
另一方面,HTML textarea元素没有此属性.我的目标是模拟HTML textarea上maxlength的行为.要求:
据了解,服务器端验证应该再次检查长度.在这里,我只关注客户端部分.
我的问题是:在HTML textarea上模拟maxlength的最干净的客户端方法是什么?理想情况下,指向您使用过的经过验证的开源JavaScript代码.
正在将自定义HTTP标头传递给Servlet应用程序以进行身份验证.标头值必须能够包含重音和其他非ASCII字符,因此必须采用特定编码(理想情况下为UTF-8).
控制身份验证环境的开发人员向我提供了这段Java代码:
String firstName = request.getHeader("my-custom-header");
String decodedFirstName = new String(firstName.getBytes(),"UTF-8");
Run Code Online (Sandbox Code Playgroud)
但是这段代码对我来说看起来并不合适:它假定了头值的编码,当我觉得有一种正确的方法来指定头值的编码时(我认为来自MIME).
这是我的问题:处理需要支持UTF-8编码的自定义标头值的正确方法(tm)是什么:
这是一个与环境无关的代码示例,如果您无法更改服务,则将标头视为UTF-8:
String valueAsISO = request.getHeader("my-custom-header");
String valueAsUTF8 = new String(firstName.getBytes("ISO8859-1"),"UTF-8");
Run Code Online (Sandbox Code Playgroud) XForms标准页面似乎表明它已不再存在,并且html5有点排序现在可以完成工作.是这样的吗?我正在考虑将异构数据块存储为XML片段 - 根据数据类型生成编辑器页面.
这是我用split编写的一个版本:
fileName.split('.').init ++ Seq("js") mkString "."
Run Code Online (Sandbox Code Playgroud)
这种转换例如foo.bar.coffee成foo.bar.js.
我喜欢什么:
indexOf()我不喜欢的:
我怎么能写一个更简单/更简单的版本?
更新:下面的答案很棒!简而言之:
原始方法的语法略短(未涵盖的角点案例)如下:
fileName.split('.').init :+ "js" mkString "."
我最近一直在研究为ASP.NET Web应用程序创建基于Web的表单的方法,这些表单可以在运行时进行编辑和管理.例如,管理员可能希望添加新的验证规则或新的字段集.
圣杯将提供一种指定表格以及(可能非常复杂的)任意验证规则以及为每个字段分配数据源的方法.然后,该规范将用于更新Web应用程序中的已部署表单,然后该表单将验证客户端和服务器端的提交.
我的调查让我看到了Xforms和许多支持它的技术.一个解决方案似乎是IBM Lotus Forms,但这需要在基础架构方面进行非常大的投资,这使得它变得不可行,尽管表单设计器可能作为创建表单的独立工具很有用.我还打印了浏览器插件,因为表单必须是公开可见的并且符合跨浏览器标准.
我注意到有许多javascript库在给定Xforms模式的情况下提供客户端实现.这些将提供部分解决方案,但仍然需要服务器端验证.
另一种选择似乎涉及使用服务器端解决方案,例如Java应用程序Orbeon.Orbeon提供了一个用于指定表单的工具(虽然没有Lotus Forms Designer那么丰富),但最有趣的一点是,它可以将XForms模式转换为完成验证的XHTML表单.如果可以与现有的ASP.NET应用程序集成,那么它是用Java编写的并不是一个大问题.
所以我的问题是之前是否有人这样做过.这听起来像是一个应该解决的问题,但本质上非常复杂.似乎可以使用现成的工具来设计表单并将其导出为Xforms模式和xhtml表单,并且似乎可以采用xforms模式和表单并使用客户端库发布它.似乎很难提供一种方法来验证服务器端的表单提交并将该过程与.NET很好地集成(虽然看起来.NET社区不涉及XForms;如果我错了请纠正我在这个数量上).
如果产品提供的东西很简单,就像可以根据模式验证提交的Web服务,我会非常高兴.也许Orbeon做到了这一点,但如果知情人士在我进一步研究之前能指出正确的方向,我将不胜感激.
非常感谢.
我想描述BDD风格的测试,例如使用FlatSpec,但保留JUnit作为测试运行器.
ScalaTest快速入门似乎没有显示任何此示例:
http://www.scalatest.org/getting_started_with_junit_4
我首先尝试天真地在@Test方法中编写测试,但这不起作用,断言从未测试过:
@Test def foobarBDDStyle {
"The first name control" must "be valid" in {
assert(isValid("name·1"))
}
// etc.
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?如果定期测试可以混合并与BDD式测试相匹配,那就更好了.