문자의 바이트 수를 세는 시도 | Power Query
3158 단어 PowerBIExcelPowerQuery
문자의 바이트 수를 세는 시도 ~ 그 2 | Power Query
Power Query 그럼 Excel의 LENB 함수 같은 것은 할 수 없는 것일까, 라고 생각해 조사한 결과입니다.
일본어에만 한정해도 예외는 있을 것 같으므로, 문제는 현장에서 대처해 주십시오. 저도 그런 마음으로 사용합니다.
Excel이라면 워크시트 함수의 LENB를 사용할 수 있으므로, 그 쪽이 확실하겠지요.
코드
이번에는 거동의 확인을 중시했기 때문에 함수화하지 않고 보여주었습니다.
그렇다면 함수화에서 무엇이든지하십시오.
q_ 표시 바이트 수 계산
//デバッグのため、引数宣言をコメントアウト
//(TargetTexts as text)=>
let
//↓デバッグ用。確認できたら、コメントアウトして関数にすればいい。
TargetTexts ="漢字カンジかんじ",
//1字ずつばらしたテーブルにする。
SplittedText = Table.FromValue( Text.ToList( TargetTexts ) ),
//便宜的にリストにすることでJSONのbinaryに変換でき、バイト数を数えることができる。
AddJsonColumn =Table.AddColumn(SplittedText,"JSON",each Json.FromValue( {[Value]} )),
//JSON既定の両端の括弧とダブルクウォートの計4字を除くため、4を引く。
半角英数判定 =Table.AddColumn(AddJsonColumn,"半角英数判定",each 1=Binary.Length( [JSON] )-4,type logical),
//判定用に半角カタカナのリストを得る。
半角カタカナ群 = List.Transform({65381..65439},Character.FromNumber ),
半角カタカナ判定 =Table.AddColumn(半角英数判定,"半角カタカナ判定",each List.Contains(半角カタカナ群,[Value]),type logical ),
表示幅計算 = Table.AddColumn(半角カタカナ判定, "表示幅",each
if List.AnyTrue({[半角英数判定],[半角カタカナ判定]}) then 1
else 2
,Int64.Type
)
in
表示幅計算
결과
그리고는 표시폭의 곳을 집계해 주면(자), 바이트수가 됩니다.
보충
JSON의 binary 데이터가 어떻게 되어 있는지, 라는 것에 대한 참고.
반각 영수 이외는 1자리가 되지 않고, 6자리의 코드로 표시되는 것 같습니다. (그 의미는 모릅니다 )
삼키기 코드
let
Source = "abcde01234あいうえお",
Custom1 = Json.FromValue( {Source} ),
Custom2 = Text.FromBinary( Custom1 )
in
Custom2
위의 코드를 넣으면 이런 느낌이 든다.
참고
UTF8 사이트를 보여주고 도움이되었습니다.
h tp // 오란게후후 c와 ry. 이 m/dn f/u tf-8. HTML
UTF8 문자 코드(영어)
htps : // 니코로. rg / chart / PDF / 울 f00. pdf
Reference
이 문제에 관하여(문자의 바이트 수를 세는 시도 | Power Query), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanuki_phoenix/items/b3a936ffc0c9557eadca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)