4

Java で文字列内のテキストの領域を検索するために を実行したい場合、とsubstringの 2 つのインデックスを指定しますが、C# では の長さをパラメーターとして指定する必要がありますが、これはどこで止めればいいのかわからない場合、問題になり、次のようなことが起こります。startendsubstring

verse[i].Substring(verse[i].IndexOf("start"), (verse[i].IndexOf("end") - verse[i].IndexOf("start"));

ただの代わりに

verse[i].Substring(verse[i].IndexOf("start"), (verse[i].IndexOf("end"));

厄介なことに、私はこの問題に何度も遭遇しました。私だけなのか、それとも私が気付いていないトリックがあるのだろうかと思います。この問題を解決するために、あなたはどのように最善を尽くしますか? (クリーン度とスピードを考慮)

ps: ほとんどすべての変数を作成するのは好きではありません。ありがとう

4

4 に答える 4

9

You can write your own extension method like this

var newstr = str.MySubString(start,end);

..

public static partial class MyExtensions
{
    public static string MySubString(this string s,int start,int end)
    {
        return s.Substring(start, end - start + 1);
    }
}
于 2012-11-25T20:39:07.010 に答える
0

この拡張方法を試してください:

public static class StringExtensions
{
    public static string MySubstring(this string s, string start, string end)
    {
        int startI = s.IndexOf(start);
        int endI = s.IndexOf(end, startI);
        return s.Substring(startI, endI - startI + 1);
    }
}

次のように使用します。

string helloWorld = "startHello Worldend".MySubstring("start", "end");
string vers = verse[i].MySubstring("start", "end");

拡張メソッドが命を救う場合があります。静的クラスがパブリックであり、名前空間にある場合、名前空間を使用するすべての人が拡張機能も取得することに注意してください。

于 2012-11-25T21:04:26.897 に答える