Skip to content

finphie/Utf8Utility

Repository files navigation

Utf8Utility

Build(.NET) NuGet Azure Artifacts

UTF-8関連のユーティリティライブラリです。

説明

Utf8Utilityは、UTF-8関連処理の実装を詰め合わせたライブラリです。

インストール

NuGet(正式リリース版)

dotnet add package Utf8Utility

Azure Artifacts(開発用ビルド)

dotnet add package Utf8Utility -s https://pkgs.dev.azure.com/finphie/Main/_packaging/DotNet/nuget/v3/index.json

使い方

using System;
using Utf8Utility;
using Utf8Utility.Text;

// stringまたはUTF-8のバイト配列、ReadOnlySpan{char|byte}を指定できます。
var array = new Utf8Array("abc");

var span = array.AsSpan();

// バイト数
var byteCount = array.ByteCount;

// 文字数
var length1 = array.GetLength();
var length2 = UnicodeUtility.GetLength(span);

// 空かどうか
var isEmpty = array.IsEmpty;

// 空か空白文字列かどうか
var isEmptyOrWhiteSpace1 = array.IsEmptyOrWhiteSpace();
var isEmptyOrWhiteSpace2 = UnicodeUtility.IsEmptyOrWhiteSpace(span);

// Ascii文字列かどうか
var isAscii1 = array.IsAscii();
var isAscii2 = UnicodeUtility.IsAscii(span);

// 内部配列への参照
ref var start = ref array.DangerousGetReference();

// 比較
var compareTo = array.CompareTo(array);
var compare1 = Utf8Array.CompareOrdinal(array, array);
var compare2 = Utf8Array.Compare(array, array, StringComparison.CurrentCulture);
var compare3 = UnicodeUtility.Compare(span, span, StringComparison.CurrentCulture);

var empty = Utf8Array.Empty;
var equals = array.Equals(array);
var hash = array.GetHashCode();
var utf16 = array.ToString();

_ = array.TryFormat(stackalloc char[256], out var charsWritten);
_ = array.TryFormat(stackalloc byte[256], out var bytesWritten);

array.CopyTo(stackalloc byte[256]);
_ = array.TryCopyTo(stackalloc byte[256]);

var chars = array.GetChars(stackalloc char[256]);
_ = array.TryGetChars(stackalloc char[256], out var charsWritten);

// Utf8ArrayをキーとしたDictionaryです。
var dict = new Utf8ArrayDictionary<int>();

// キー指定にはUtf8Arrayの他にReadOnlySpan{char|byte}を指定できます。
_ = dict.TryGetValue(array, out var result);
ref var dictStart = ref dict.GetValueRefOrNullRef(array);

_ = dict.TryAdd(array, 1);
dict.Clear();

サポートフレームワーク

  • .NET 8
  • .NET 7
  • .NET Standard 2.1

作者

finphie

ライセンス

MIT

クレジット

このプロジェクトでは、次のライブラリ等を使用しています。

ライブラリ

テスト

アナライザー

ベンチマーク

その他