2017-12-25 24 views
0

文字列「\\ u2026」があるとします。そして、それを "\ u2026"に変更してScalaのUnicodeを表示したいと思います。それを行う方法はありますか?あなたの時間をありがとう。Scalaの\をに変換する

編集: 私は明確にしてください。 「文字に続いてUnicodeである:ています... \\」:

を文字に続いてUnicodeである:印刷し、何らかの事情により、ように私は、文字列を持っています\ u2026

しかし、私が編集したいですそれはそれが印刷されるように:

後チャーはUnicodeである:...

が答えてくれてありがとう。これは私がやったことです。 String.replaceメソッドを使用するように求めて質問へ

def FixString(string: String) : String = { 
    var newString = string; 
    // Find the 1st problematic string 
    var start = string.indexOf("\\u"); 
    while(start != -1) { 
    // Extract the problematic string 
    val end = start + 6; 
    val wrongString = string.substring(start,end); 
    // Convert to unicode 
    val hexCode = wrongString.substring(2); 
    val intCode = Integer.parseInt(hexCode, 16); 
    val finalString = new String(Character.toChars(intCode)); 
    // Replace 
    newString = string.replace(wrongString,finalString); 
    // Find next problematic string 
    start = string.indexOf("\\u", end); 
    } 
    return newString; 
} 
+0

ダブルバックスラッシュを削除したいだけですか? –

答えて

2

)、その後、

val stringWithBackslash = "\\u2026" // just for example 
val hexCode = stringWithBackslash.substring(2) // "2026" 
val intCode = Integer.parseInt(hexCode, 16) // 8230 
val finalString = new String(Character.toChars(intCode)) // "…" 
01:)アレクセイ・ロマノフの答えによって、

(コードはCreating Unicode character from its numberに適合)。そうでない場合は、正規表現"""\\u(\d{4})"""で必要な部分を選択します。

1

短い答え:私はバックスラッシュ文字もJavaの文字列エスケープシーケンスを開始しますので、それぞれのバックスラッシュを倍増しなければならなかった

"\\u2026".replace("\\\\", "\\") 

注意してください。ここで

$ sbt console 
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151). 
Type in expressions for evaluation. Or try :help. 

scala> System.setProperty("file.encoding","UTF-8") 
res0: String = UTF-8 

scala> val strWithError: String = "\\u2026" 
strWithError: String = \u2026 

scala> val prefixedString: String = strWithError.replace("\\\\", "\\") // corrected string as per OP 
prefixedString: String = \u2026 

https://stackoverflow.com/a/16034658/553865から適応ボーナス情報、である(参照:あなたはJVMを実行する場合は

はUTF-8 IO(この質問のために必要ではない)、このようなJavaシステムプロパティfile.encoding=UTF-8を設定しましたあなたは、文字列が正確に\uXXXX(エスケープされていないことがわかっている場合

scala> val utfString: String = strWithError.replace("\\u", "") // utf code point 
utfString: String = 2026 

scala> val intCode = Integer.parseInt(utfString, 16) 
intCode: Int = 8230 

scala> val symbol = new String(Character.toChars(intCode)) 
symbol: String = … 
関連する問題