web-dev-qa-db-ja.com

C#で文字列の最初の10文字だけを取得する方法

文字列があり、最初の10文字だけを取得する必要があります。これを簡単に行う方法はありますか?.

誰かが私を見せてくれることを願っています。

17
string s = "Lots and lots of characters";
string firstTen = s.Substring(0, 10);
27
Teoman Soygul

次のような拡張メソッドを作成できます。

public static class Extension
{
    public static string Left(this String input, int length)
    {
        return (input.Length < length) ? input : input.Substring(0, length);
    }
}

次のように呼び出します。

string something = "I am a string... truncate me!";
something.Left(10);
11
Tom

変数sが文字列である簡単なワンライナー:

public string GetFirstTenCharacters(string s)
{
    // This says "If string s is less than 10 characters, return s.
    // Otherwise, return the first 10 characters of s."
    return (s.Length < 10) ? s : s.Substring(0, 10);
}

そして、このメソッドを次のように呼び出します:

string result = this.GetFirstTenCharacters("Hello, this is a string!");
4
Chris Leyva

依存する:-)

通常、おそらくSubStringを探しています...しかし、ユニコードを使って空想的なことをしている場合、これはどこがうまくいかないかを示しています(例えば、ユニコード範囲> 0xFFFF):

static void Main(string[] arg)
{
    string ch = "(\xd808\xdd00汉语 or 漢語, Hànyǔ)";

    Console.WriteLine(ch.Substring(0, Math.Min(ch.Length, 10)));

    var enc = Encoding.UTF32.GetBytes(ch);
    string first10chars = Encoding.UTF32.GetString(enc, 0, Math.Min(enc.Length, 4 * 10));
    Console.WriteLine(first10chars);

    Console.ReadLine();
}

うまくいかない理由は、文字が16ビットであり、LengthがUnicode文字ではなくUTF-16文字をチェックするためです。そうは言っても、それはおそらくあなたのシナリオではありません。

3
atlaste

文字列の長さが10未満であっても例外はありません

String s = "characters";
String firstTen = s.Substring(0, (s.Length < 10) ? s.Length : 10);
2
Anand
2
holtavolt

aString.Substring(0, 10);を使用するだけです。

string longStr = "A lot of characters";
string shortStr = new string(longStr.Take(10).ToArray());
2
w.b

次のようなオプションがたくさんあります:

string original = "A string that will only contain 10 characters";
//first option
string test = original.Substring(0, 10);
//second option
string AnotherTest = original.Remove(10);
//third option
string SomeOtherTest = string.Concat(original.Take(10));

それがお役に立てば幸いです。

1
terrybozzio

@長島ひろみ

特定の長さの文字列を取得することは、c#では非常にシンプルで簡単ですが、最も効率的な方法でそれを実行することが重要です。

考慮すべき点:

  1. エラー処理
  2. パフォーマンス

以下は、可能な最も簡単な方法で最も効率的な方法でそれを実行する例です。

ASPX:

<body>
<form id="form1" runat="server">
<div>
    <asp:TextBox runat="server" ID="txtInput"></asp:TextBox>
    <asp:Button runat="server" ID="btn10Chars" onclick="btn10Chars_Click" text="show 10 Chars of string"/><br />
    <asp:Label runat ="server" ID="lblOutput"></asp:Label>
</div>
</form>

C#:

 public partial class Home : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btn10Chars_Click(object sender, EventArgs e)
    {
        lblOutput.Text = txtInput.Text.Length > 10 ? txtInput.Text.Substring(0, 10) : txtInput.Text + "  : length is less than 10 chars...";
    }
}

例から離れてください:

  1. Try catchを使用しないエラー処理。
  2. If条件と比較してパフォーマンスの点で最適な3項演算子が使用されます。
  3. まとめると、必要な機能を実現するための1行のコードだけです。
1
Venkatesh Ellur