-2

私はこの文字列を持っています...

lg-270-110.sh-300-110.hd-180-1.hr-155-61.ea-1403-62.cc-3007-110-110.ch-220-63.ca-3084-64-64

文字列は常に変化しています...

2つの特定のポイント間のデータを取得するにはどうすればよいですか...

私が本当に必要としているのは、hd-180-1を抽出することです。とhr-155-61。文字列からそれらを削除します

ただし、データが常にhd-180-1であるとは限りません。-それはhd-171-4である可能性があります。-だから私はHDとの間のデータを削除する必要があります。プログラムで

どうすればこれを行うことができますか?

4

5 に答える 5

1

これは正規表現の仕事のように見えます

string s = "lg-270-110.sh-300-110.hd-180-1.hr-155-61.ea-1403-62.cc-3007-110-110.ch-220-63.ca-3084-64-64";

s = Regex.Replace(s, @"hd.*?\.", "");
s = Regex.Replace(s, @"hr.*?\.", "");
Console.WriteLine(s);

これが私のお気に入りの正規表現リファレンスです

正規表現を使用してパターンに一致させることもできます

string s = "lg-270-110.sh-300-110.hd-180-1.hr-155-61.ea-1403-62.cc-3007-110-110.ch-220-63.ca-3084-64-64";

Regex r = new Regex(@"hd.*?\.");
Console.WriteLine(r.Match(s).Value);
于 2013-01-03T19:49:26.133 に答える
0

おそらく、 IndexOfSubstring(または場合によっては正規表現)の組み合わせを使用する必要があります。必要なデータを抽出するには、文字列がどのように構成されているかを正確に理解して説明する必要があります。

IndexOfは文字列を検索します。文字列内の最初の文字を返します。また、文字列内に部分文字列を見つけることもできます。ループ構造でよく使用されます。何も見つからない場合は負の値を返します。

サブストリングは文字列を抽出します。開始インデックスと長さを指定する必要があります。次に、その範囲の文字を含む完全に新しい文字列を返します

        string data = "lg-270-110.sh-300-110.hd-180-1.hr-155-61.ea-1403-62.cc-3007-110-110.ch-220-63.ca-3084-64-64";

        int indexOf_hd = data.IndexOf("hd");
        int indexOf_fullstop = data.IndexOf(".", indexOf_hd);

        string extracteddata = data.Substring(indexOf_hd, indexOf_fullstop - indexOf_hd);

        // extracteddata = hd-180-1

IndexOf例とsubstringの例も見てください

于 2013-01-03T19:46:13.623 に答える
0

おそらく、string.splitを使用することもできます。

List<string> list = yourString.Split(".");
List<string> keeping = list.Where(s => !s.Contains("hd") && !s.Contains("hr"))
return String.Join(".", keeping);
于 2013-01-03T19:50:07.537 に答える
0

正規表現を使用できます

string data = "lg-270-110.sh-300-110.hd-180-1.hr-155-61.ea-1403-62.cc-3007-110-110.ch-220-63.ca-3084-64-64";

//Match things that are preceded by a dot (.) (or the beginning of input)
// that begin with 'h' followed by a single letter, then dash, three digits, 
// a dash, at least one digit, followed by a period (or the end of input)
var rx = new Regex(@"(?<=(^|\.))h\w-\d{3}-\d+(\.|$)");

//Get the matching strings found
var matches = rx.Matches(data);

//Print out the matches, trimming off the dot at the end
foreach (Match match in matches)
{
    Console.WriteLine(match.Value.TrimEnd('.'));
}

//Get a new copy of the string with the matched sections removed
var result = rx.Replace(data, "").TrimEnd('.');
于 2013-01-03T19:50:21.703 に答える
0

オンラインで機能する関数を見つけました...

            public static string RemoveBetween(string s, string begin, string end)
            {
                Regex regex = new Regex(string.Format("{0}{1}", begin, end));
                return regex.Replace(s, string.Empty);
            }
于 2013-01-03T20:01:02.970 に答える