簡體   English   中英

刪除部分字符串的最佳方法是什么? (C#)

[英]What's the best way to remove portions of a string? (C#)

我循環遍歷一個數組,其中有一個字符串,如下例所示:“1001 - 一些成分”。

現在,當我遍歷數組時,我得到整個字符串

string ingCode = theData[i + 1];

但我真正需要的只是“1001”而不是整個shibang。

結合列出的其他一些方法,以獲得第一部分或代碼

string myString = "1001--Some ingredient";
string myPortionOfString = myString.Substring(0, myString.IndexOf("--"));

這使您可以處理比4個字符更長(或更短)的成分代碼。

如果分隔符發生更改但所需信息始終為數字,則使用正則表達式解析數字。

您可以使用SubString方法:

    string myString = "1001--Some ingredient";
    string myPortionOfString = myString.Substring(0, 4);
    Console.WriteLine(myPortionOfString);

控制台輸出是這樣的:

1001

你有沒有提到這個?

編輯:

看到評論之后,如果您不確切地知道“ - ”之前有多少數字,那么最好的答案就是@Rob Allen提出的答案。 我給他+1。

//...
string myPortionOfString = myString.Substring(0, myString.IndexOf("--"));
//...

如果分隔符始終為“ - ”,您可以嘗試:

string ingCode = theData[i+1].Split('-')[0];

如果您始終對字符串開頭的數字感興趣,請嘗試使用RegEx:

string ingCode = System.Text.RegularExpressions.Regex.Match(theData[i+1], @"^([0-9]*)").ToString();

您可以使用正則表達式:

Regex rgx = new Regex(@"(?<Code>\d+)--(?<Ingedient>\w+)", RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches("1001--Some Ingredient");
foreach(Match match in matches)
    Console.WriteLine("Code:{0}, Ingredient:{1}",match.Groups["Code"], match.Groups["Ingredient"]);

可以通過幾種不同的方式完成,具體取決於您對數據外觀的了解。

假設我們一直在尋找前4個字符:

string ingCode = theData[i + 1].Substring(0, 4);

假設我們正在尋找“ - ”之前的任何內容:

string ingCode = theData[i + 1].Split(new string[] {"--"}, StringSplitOptions.None)[0];

假設我們在字符串的開頭尋找一個或多個數字:

string ingCode = Regex.Match(theData[i + 1], @"^\d+").Captures[0];

你可以使用StringBuilder類,或者只是通過在[0],[1],[2],[3]處附加索引來創建一個新的字符串(在你總是需要前4個字符的情況下。你也可以創建一個左功能:

Console.Writeline(Left(myString, 4));

public static string Left(string param, int length)        
{        
string result = param.Substring(0, length);             
return result;        
} 

您可以做的另一件事是創建一個字符串擴展方法:

static class StringExtensions
 {
  public static String Left(this string str, int numbOfChars)
   {
    if(str.Length <= numbOfChars) return str;
    return str.Substring(0, numbOfChars);
   }

  public static String Right(this string str, int numbOfChars)
    {
      if numbOfChars >= str.Length) return str;
      return str.Substring(str.Length, str.Length-numbOfChars);
    }
 }

您可以這樣調用:

String test = "Hello World";
String str = test.Left(3); //returns Hel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM