标签: scala-2.11

如何用scala中的其他文本替换字符串中的文本

我有以下字符串

var str="ArtShare$u002ETotalArtShares"
Run Code Online (Sandbox Code Playgroud)

我想用它替换它"$u002E""."这样我的字符串就会变成“ArtShare.TotalArtShares”来实现这个我使用了替换功能

var str="ArtShare$u002ETotalArtShares"
var replace=str.replace(".","$u002E")
println("replaced string is "+replace)
Run Code Online (Sandbox Code Playgroud)

但它不工作以下打印在控制台上

replaced string is ArtShare$u002ETotalArtShares
Run Code Online (Sandbox Code Playgroud)

请指导我哪里做错了谢谢

更新用户的答案后nyavro我想这

var str="ArtShare$u002ETotalArtShares"
var replace=str.replace("$u002E", ".")
println("replaced string is "+replace)
Run Code Online (Sandbox Code Playgroud)

但输出保持不变,但为了测试我已经尝试过这个

 var str1="ArtShare$u002ETotalArtShares"
 var replace1=str1.replace("Total", ".")
 println("replaced string is "+replace1)
Run Code Online (Sandbox Code Playgroud)

打印以下内容

replaced string is ArtShare$u002E.ArtShares
Run Code Online (Sandbox Code Playgroud)

这意味着当我用“.”替换 Total 时代码正在工作。但是当我给出这部分字符串时它不起作用$u002E请帮助我我不明白为什么会发生这种情况

更新 2 我试过这样做

 var str2="ArtShare$u002ETotalArtShares"
 var replace2=str2.replace("u002E", ".")
 println("replaced string is "+replace2)
Run Code Online (Sandbox Code Playgroud)

打印以下内容

replaced string is ArtShare$.TotalArtShares
Run Code Online (Sandbox Code Playgroud)

在那之后,我猜是 $sign 导致了它没有替换的问题,请帮助我我该如何替换它

string replace scala scala-2.11

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

Scala 2.11中的宏API发生了什么变化?

我试图将一个宏从Scala 2.10移植到2.11.0-M7:

import scala.reflect.macros.Context

object Format {
  def apply[A]: Unit = macro applyImpl[A]

  def applyImpl[A: c.WeakTypeTag](c: Context): c.Expr[Unit] = ???
}
Run Code Online (Sandbox Code Playgroud)

必须改变一些东西,因为编译器说不scala.reflect.macros.Context存在.

我的构建文件如下所示:

scalaVersion := "2.11.0-M7"

resolvers += Resolver.sonatypeRepo("snapshots")

addCompilerPlugin("org.scala-lang.plugins" % "macro-paradise" % "2.0.0-SNAPSHOT"
  cross CrossVersion.full)
Run Code Online (Sandbox Code Playgroud)

有线索吗?

macros scala scala-2.11

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

如何在scala中使用迭代器方法迭代两次

// iteratorFunc is Iterable[SomeClass]
val iterator1 = iteratorFunc.iterator

iterator1 foreach {
    ...
}


val iterator2 = iteratorFunc.iterator

iterator2 foreach {
   ...
}
Run Code Online (Sandbox Code Playgroud)

里面的代码iterator1 foreach成功完成.但是,iterator2给出了空迭代器.

请帮忙.

scala scala-2.11

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

如何防止 Scala 函数接收“null”作为参数

我有一个带有这个签名的 Scala 方法:

  def m (map: Map [String, _])
Run Code Online (Sandbox Code Playgroud)

我想 Map 是一种引用类型,因此,我可以调用m传递null

  m (null) // Allowed call
Run Code Online (Sandbox Code Playgroud)

编译器有什么办法不允许null某些方法调用吗?Kotlin 等其他语言通过明确说明参数可以为 null 来实现这一点:http : //kotlinlang.org/docs/reference/null-safety.html

Scala 中有类似的东西吗?

编辑:感谢您的评论。我知道“空”引用是一个运行时问题,但其他类型系统的其他语言会在编译时处理这个问题。

我只想知道 Scala 中是否也有方法(我开始使用该语言)。检查评论、答案和Scala 类型层次结构,我认为这是不可能的。

对于值对象(如不可变集合和案例类),避免 'null' 可能是有意义的(但是它们扩展AnyRef)。

我可以尝试避免使用“null”,但例如 Map.get 如果找不到键则返回“null”,因此我必须处理这个问题。

关于Map[String, _]它是一个异构映射,可以将其视为一个 JSON 对象。我可以用一种不同的、更像 Scala 的方式来处理这个问题吗?

谢谢!

scala scala-2.11

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

标签 统计

scala ×4

scala-2.11 ×4

macros ×1

replace ×1

string ×1