2017-12-31 32 views
0
let mut start = true; 
for v in count as String { 
    s += match v as usize { 
     n if n == 2 || n == 3 => "\u{00b" + n + "}", 
     n if n >= 4 || (n <= 1 && !start) => "\u{207" + n + "}", 
     start && 1 => "", 
    } 
    start = false; 
} 

私は、これはUnicode文字を書き込むためのものな方法ではありません知っている:変数を連結してUnicode文字を作成する方法は何ですか?

error: unterminated unicode escape (needed a `}`) 
--> src/main.rs:5:45 
    | 
5 |    n if n == 2 || n == 3 => "\u{00b" + n + "}", 
    |           ^

しかし、正しい方法は何ですか?

+0

あなたがR# 'に問題のある部分を包む試してみたいことがあります...#'、例えば'r#" \ u {00b "#'、つまりそれらを[生の文字列リテラル](https://doc.rust-lang.org/reference/tokens.html#raw-string-literals)としてマークします。 – ljedrz

答えて

0

std::char::from_u32String::pushを組み合わせる:

use std::char::from_u32; 
let mut s = String::new(); 
s.push(from_u32(0xb0 + 2).unwrap()); 
s.push(from_u32(0xb0 + 3).unwrap()); 
s.push(from_u32(0x2070 + 1).unwrap()); 
println!("{:?}", s); 
関連する問題