相关疑难解决方法(0)

Ruby:检查东亚宽度(Unicode)

使用Ruby,我必须以列式格式输出字符串到终端.像这样的东西:

| row 1     | a string here     | etc
| row 2     | another string    | etc
Run Code Online (Sandbox Code Playgroud)

我可以使用String#ljust和%s对拉丁文UTF8字符做得很好.

但是当字符是韩文,中文等时出现问题.当有英文行穿插包含韩文等的行时,列不会对齐.

我怎样才能在这里获得列对齐?有没有办法输出相当于固定宽度字体的亚洲字符?如何在Vim中显示和编辑文档?

ruby vim fonts asianfonts utf8-decode

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

确定unicode字符在C++中是全宽还是半宽

我正在编写一个应该包装任意unicode文本的终端(控制台)应用程序.

终端通常使用等宽(固定宽度)字体,因此要包装文本,它只是计算字符数并观察单词是否适合某行并相应地采取行动.

问题是Unicode表中有全宽字符占用终端中2个字符的宽度.

计算这些将看到1个unicode字符,但打印的字符是2个"正常"(半宽)字符宽,打破了包装程序,因为它不知道占用两倍宽度的字符.

例如,这是一个全角字符(U + 3004,JIS符号)

?
12

它虽然预先格式化,但它不占用2个字符的全宽,但它确实使用了终端中西方字符宽度的两倍.

为了解决这个问题,我必须区分全宽或半宽字符,但我找不到在C++中这样做的方法.是否真的有必要知道unicode表中的所有全角字符来解决问题?

c++ unicode

6
推荐指数
2
解决办法
2016
查看次数

文本框中仅允许使用半角片假名(日语)字符

在我的Rails应用中,我有一个像这样的文本字段

<%= f.text_field :guaranter_furigana_name, autocomplete: "off", class: "form-control", placeholder: "????? ?????????", maxlength: "50",  :disabled => @disabled_field %>
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery验证此文本字段仅接受半角片假名字符(从ff60到ff9f的Unicode值)。这就是我尝试过的

// Allow only half width kana for guranter ????
$(function (){
  $("#t_user_name_register_guaranter_furigana_name").on("input", function(e){

    var key = e.keyCode || e.charCode;

    var inp = String.fromCharCode(key);

    var kanaregexp = new RegExp('[\uff00-\uff9f]');
    if (kanaregexp.test(inp) != true){
      if( key != 8 && key != 46 && key != 32){
        inp = $(this).val();
        $(this).val(inp.slice(0,-1));
        $("#telno_errmsg").html("?????????????????").show().fadeOut(3000);
        return false;
      }
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

该代码是一团糟,并不总是能正常工作。请帮忙

validation jquery ruby-on-rails cjk

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

标签 统计

asianfonts ×1

c++ ×1

cjk ×1

fonts ×1

jquery ×1

ruby ×1

ruby-on-rails ×1

unicode ×1

utf8-decode ×1

validation ×1

vim ×1