这是我用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 "."
Rex*_*err 10
我担心你实际上必须做更长时间才能做出最明智的事情:
scala> "oops".split('.').init ++ Seq("js") mkString "."
res0: String = js
Run Code Online (Sandbox Code Playgroud)
有点意外丢失您的文件名称(至少如果您是最终用户)!
让我们试试正则表达式:
scala> "oops".replaceAll("\\.[^.]*$", ".js")
res1: java.lang.String = oops
Run Code Online (Sandbox Code Playgroud)
没有丢失文件名,但也没有扩展名.确认.
我们来解决它:
def extensor(orig: String, ext: String) = (orig.split('.') match {
case xs @ Array(x) => xs
case y => y.init
}) :+ "js" mkString "."
scala> extensor("oops","js")
res2: String = oops.js
scala> extensor("oops.txt","js")
res3: String = oops.js
scala> extensor("oops...um...","js")
res4: String = oops...js
Run Code Online (Sandbox Code Playgroud)
或者使用正则表达式:
scala> "oops".replaceAll("\\.[^.]*$", "") + ".js"
res5: java.lang.String = oops.js
scala> "oops.txt".replaceAll("\\.[^.]*$", "") + ".js"
res6: java.lang.String = oops.js
scala> "oops...um...".replaceAll("\\.[^.]*$", "") + ".js"
res7: java.lang.String = oops...um...js
Run Code Online (Sandbox Code Playgroud)
(注意文件名以句点结尾的角点情况的不同行为.)
| 归档时间: |
|
| 查看次数: |
9243 次 |
| 最近记录: |