0

私はC#を初めて使用しますが、効率的なC#の方法で作成するのを手伝ってください。

ケース(常に最初の文字は「-」で、最後の文字は「>」です):

例1:

input:   bdfdfd-wr>
output:  wr

例2:

input:   -dsdsds-sdsds-grtt>
output:  grtt

例3:

input:   -dsdsds-sdsds-grtt>><>>dfdfdfd
output:  grtt

例4:

input:   -dsdsds-sdsds-grtt>><->>df-d=fdfd
output:  grtt
4

6 に答える 6

2
string example = "-dsdsds-sdsds-grtt>";
int lastIndexOfHyphen = example.LastIndexOf("-");
int indexOfBracket = example.IndexOf(">", lastIndexOfHyphen);
string substr = example.Substring(lastIndexOfHyphen + 1, indexOfBracket - lastIndexOfHyphen - 1);
于 2012-09-11T12:49:16.550 に答える
1
        string s = "-dsdsds-sdsds-grtt>";
        string output = null;
        if (s.Contains(">"))
        {
            output = s.Split(new string[] { ">" }, 
                             StringSplitOptions.RemoveEmptyEntries)
                      .FirstOrDefault(i => i.Contains("-"));
            if (output != null)
                output = output.Substring(output.LastIndexOf("-") + 1);
        }

-と>で囲まれた最初の行のテキストを返します。入力が、の場合、 ;"-dsdsds-sdsds-grtt>asdas-asq>"を返します。grttfor--dsdsds-sdsds-grtt>><>>dfdfdfdリターンgrtt

そこでは、文字列を操作するための多くのメソッドを見つけることができます。

于 2012-09-11T12:52:54.013 に答える
1
     string input = "-dsdsds-sdsds-grtt>";
     int startInd = input.LastIndexOf('-');
     int endInd = input.IndexOf('>', startInd);
     string result;
     if (startInd < endInd) 
         result = input.Substring(startInd + 1, endInd - startInd - 1);

編集:

    string input = "-dsdsds-sdsds-grtt>><->>df-d=fdfd";
    string str = input.Substring(0, input.IndexOf('>'));
    string result = str.Substring(str.LastIndexOf('-') + 1);

linqを使用することも良いオプションのようです:

var result = input.Split('>').First().Split('-').Last();
于 2012-09-11T12:52:54.730 に答える
1

私は2つの方法を考えることができます:

  • のような正規表現を使用し-([a-z]+)>ます。結果はMatch.Groups[1]になります。
  • IndexOfを使用してを検索し、 LastIndexOf>を使用して最後のダッシュを検索してから、Substringを使用て単語を取得します。
于 2012-09-11T12:49:19.133 に答える
1

正規表現を使用できます。


例:

var r = new Regex(@"-(\w*)>");

var inputs = new [] { "bdfdfd-wr>",
                      "-dsdsds-sdsds-grtt>",
                      "-dsdsds-sdsds-grtt>><>>dfdfdfd",
                      "-dsdsds-sdsds-grtt>><->>df-d=fdfd" };

foreach(var i in inputs)
    Console.WriteLine(r.Match(i).Groups[1].Value);

出力:

wr
grtt
grtt
grtt

于 2012-09-11T12:49:56.013 に答える
1

LINQスタイル:

var output = input.Split('>').First().Split('-').Last();
于 2012-09-11T16:29:42.147 に答える