我正试图从一个字符串中分割掉所有的汉字,但是我遇到了一个奇怪的角色
scala> ""
res1: String =
scala> res1.length
res2: Int = 2
scala> res1.getBytes
res3: Array[Byte] = Array(-16, -91, -111, -82)
scala> res1(0)
res4: Char = ?
scala> res1(1)
res5: Char = ?
Run Code Online (Sandbox Code Playgroud)
它是单个字符,但Java/Scala将其确定为两个未知字符.通常我看到中文字符在UTF-8中占用三个字节,但这个字符需要四个字符.
因此,我无法拆分String并找到这个单个字符.更糟糕的是,当myString.replaceAll("[^\\p{script=Han}]", "")用于踢出所有非中文字符时,第二部分被替换,它变成无效的字符串.
这有什么解决方案吗?我在Ubuntu上使用openjdk-8-jdk.
我用
name := "sbt-publish-test"
version := "0.1-SNAPSHOT"
publishTo := Some(Resolver.file("sbt-repo", file("/home/pishen/sbt-repo")))
Run Code Online (Sandbox Code Playgroud)
并将sbt publish我的项目发布到目录中.
现在在另一个项目中,我想解决刚刚发布的项目.我用
resolvers += "my-repo" at "file:///home/pishen/sbt-repo"
libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)
并且能够毫无错误地解决项目.结果show resolvers是:
> show resolvers
[info] List(my-repo: file:///home/pishen/sbt-repo)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用时
resolvers += Resolver.file("my-repo", file("/home/pishen/sbt-repo"))
libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)
结果show resolvers成为:
> show resolvers
[info] List(FileRepository(my-repo,FileConfiguration(true,None),Patterns(ivyPatterns=List(), artifactPatterns=List(/home/pishen/sbt-repo/[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[artifact]-[revision](-[classifier]).[ext]), isMavenCompatible=true, descriptorOptional=false, skipConsistencyCheck=false)))
Run Code Online (Sandbox Code Playgroud)
并且sbt说当我输入时它无法解决依赖sbt update:
[warn] module not found: default#sbt-publish-test_2.10;0.1-SNAPSHOT
[warn] ==== local: tried
[warn] /home/pishen/.ivy2/local/default/sbt-publish-test_2.10/0.1-SNAPSHOT/ivys/ivy.xml
[warn] ==== …Run Code Online (Sandbox Code Playgroud) 在http://www.artima.com/pins1ed/builtin-control-structures.html#7.7,我看到以下代码
val a = 1;
{
val a = 2
println(a)
}
println(a)
Run Code Online (Sandbox Code Playgroud)
它说这里需要分号,但为什么呢?
根据http://www.artima.com/pins1ed/classes-and-objects.html#4.2中的规则,我认为分号应该是自动添加的
val a = 1 可以是一份法律声明.{,我认为可以开始一个法律声明.(因为如果我添加分号并将前两行分成两个语句,则没有编译错误.)val a = 1 不在括号或括号中.