1. ホーム
  2. c#

古いvbのleft(string, length)関数の.NETでの同等品

2023-10-01 10:06:28

質問

非.NETプログラマとして、私は古いVisual Basic関数の.NET版に相当するものを探しています。 left(string, length) . それは、任意の長さの文字列に対して動作するという点で、怠惰なものでした。予想通り left("foobar", 3) = "foo" を使う一方で、最も役に立つのは left("f", 3) = "f" .

.NETでは string.Substring(index, length) は範囲外のすべてに対して例外を投げます。Javaでは、Apache-Commonsのlang.StringUtilsをいつも手元に置いていました。Googleでは、文字列関数を検索してもあまりヒットしません。


ノルドリン - わー、VB.NETの拡張機能、ありがとうございます! 私の最初の出会いは、C#で同じことをするのに数秒かかりましたが。

public static class Utils
{
    public static string Left(this string str, int length)
    {
        return str.Substring(0, Math.Min(length, str.Length));
    }
}

静的なクラスとメソッド、そして this キーワードに注目してください。そうです、これらは "foobar".Left(3) . また MSDNにおけるC#の拡張機能 .

どのように解決するのですか?

ここに、その仕事をするための拡張メソッドがあります。

<System.Runtime.CompilerServices.Extension()> _
Public Function Left(ByVal str As String, ByVal length As Integer) As String
    Return str.Substring(0, Math.Min(str.Length, length))
End Function

つまり、昔のVBのように Left 関数(つまり Left("foobar", 3) ) を使うか、新しいVB.NETの構文、すなわち

Dim foo = "f".Left(3) ' foo = "f"
Dim bar = "bar123".Left(3) ' bar = "bar"