[英]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.