web-dev-qa-db-ja.com

位置と区切り文字で文字列の部分文字列を抽出するにはどうすればよいですか

部分文字列を文字列からどのように分割できますか

私がひもを持っているように

String mainString="///Trade Time///Trade Number///Amount Rs.///";

今私は他の文字列を持っています

String subString="Amount"

次に、他の方法ではなく、subStringという名前の2番目の文字列を使用して部分文字列Amount Rs.を抽出しますが、最初のように2つのパラメータを使用して抽出する必要があります。 2番目は次の文字列///までです。

14
Harikrishna

まず、部分文字列のインデックスを取得します。

int startIndex = mainString.IndexOf(subString);

次に、次のスラッシュのインデックスを取得します。

int endIndex = mainString.IndexOf("///", startIndex);

次に、必要な部分文字列を取得できます。

string amountString = mainString.Substring(startIndex, endIndex - startIndex);
28
Guffa

これは私が信じるあなたの問題を解決するはずです:

_mainString.substring(mainString.IndexOf("Amount Rs. "), "///")
_

ここで、mainString.IndexOf("Amount Rs. ")開始インデックス&_"///"_は終了インデックスです。

1
Ravia
string str = Regex.Match("///(?<String>[^/]*?" + subString + "[^/]*?)///").Groups["String"].Value;

String.Formatを使用する必要がありますが、@文字列で{x}を正確に使用すると、覚えていない正規表現が使用されます({}を2倍にする必要がありますか?)

N.B: これは、/を期待していないことを前提としているため、少し改善される可能性があります。

1
joshcomley

@Guffaの答えへの賛辞として、あなたはそれから拡張メソッドを作ることができます:

注:提供されたインデックスが文字列の範囲内にあることを確認するための検証はありません。

public static class StringExtensions
{

    public static string SubstringBetweenIndexes(string value, int startIndex, int endIndex)
    {
        return value.Substring(startIndex, endIndex - startIndex);
    }

}
0
contactmatt