2020年12月15日

我的vim設定 PART 2

又來了,他進化了,現在長成這樣 … 

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
call vundle#end()
filetype plugin indent on

" YouCompleteMe
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf=0
let g:ycm_python_binary_path='/usr/bin/python3'
let g:ycm_autoclose_preview_window_after_completion=1

set term=screen-256color-s
colorscheme burnttoast256

set autoindent
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79

set showmatch

set number
set relativenumber
set ic
set cindent
set confirm
set wrap

set encoding=utf-8

set guioptions-=r
set guioptions-=L
set guioptions-=b

set guifont=Monaco:h13

syntax on
set ignorecase
set incsearch
set hlsearch
set cursorline
set cursorcolumn

.net 字串比較


故事先來一下:

DB存的是str1,使用者輸入的是str2,程式說這兩個字串不一樣,我一眼就看出 ... 看出這個問題我要找很久 …

其實也還好,馬上想到是字串比對StringComparison的問題

原本用的是OrdinalIgnoreCase,但這串奇怪語言,我猜應該是要包含點什麼文化特性,試的結果如下:

str1 = "HÀ HỮU TUYÊN";
str2 = "HÀ HỮU TUYÊN";

 

 

https://docs.microsoft.com/zh-tw/dotnet/standard/base-types/best-practices-strings

官方建議,大概總結一下
  1. 沒有文化特性(只有英文、符號)的比較可以用Ordinal,OrdinalIgnoreCase(效能也比較好)
  2. 有文化特性的(多語系)請用CurrentCulture
  3. 沒事不要用InvariantCulture
  4. 用string.Equals 最好指定 StringComparison,給明確的規則
  5. string.Compare,string.CompareTo不要拿來檢查是否相等(官方寫的沒給理由,有空或有心人再找)