2012-09-11 125 views
0

我是C#中的新成員,請幫忙寫高效的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 
+1

如果你有多個'>'字符? – Tudor

+1

你有任何代碼可以顯示你到目前爲止嘗試過的嗎? –

回答

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(); 
+0

謝謝,但最後一個字符應該是「>」而不是「 - 「,請參閱我添加的示例4 – Yosef

2
string example = "-dsdsds-sdsds-grtt>"; 
int lastIndexOfHyphen = example.LastIndexOf("-"); 
int indexOfBracket = example.IndexOf(">", lastIndexOfHyphen); 
string substr = example.Substring(lastIndexOfHyphen + 1, indexOfBracket - lastIndexOfHyphen - 1); 
+0

+1爲最簡單的方法 – Habib

+0

謝謝,雖然我確實看到一個缺陷 - 如果在成角度的括號後面出現連字符,這將失敗。 –

+1

耶可能是,但國際海事組織,重要的是要告訴OP有關使用'IndexOf'和'LastIndexOf'方法 – Habib

1

您可以使用regular expressions


實施例:

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

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>",它將返回grtt;爲-dsdsds-sdsds-grtt>><>>dfdfdfd - 返回grtt以及

There你可以找到很多使用字符串的方法。

1

LINQ風格:

var output = input.Split('>').First().Split('-').Last(); 
相關問題