我循环遍历数组,其中有一个字符串,如下例所示:“1001 - 某些成分”。
现在,当我遍历数组时,我得到整个字符串
string ingCode = theData[i + 1];
但我真正需要的只是“1001”而不是整个shibang。
答案 0 :(得分:9)
结合列出的其他一些方法以获取第一部分或代码
string myString = "1001--Some ingredient";
string myPortionOfString = myString.Substring(0, myString.IndexOf("--"));
这使您可以处理比4个字符更长(或更短)的成分代码。
如果分隔符发生更改但所需信息始终为数字,则使用正则表达式解析数字。
答案 1 :(得分:3)
您可以使用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("--"));
//...
答案 2 :(得分:3)
如果分隔符始终为“ - ”,则可以给出一个镜头:
string ingCode = theData[i+1].Split('-')[0];
如果您始终对字符串开头的数字感兴趣,请尝试使用RegEx:
string ingCode = System.Text.RegularExpressions.Regex.Match(theData[i+1], @"^([0-9]*)").ToString();
答案 3 :(得分:2)
您可以使用正则表达式:
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 :(得分:1)
可以通过几种不同的方式完成,具体取决于您对数据外观的了解。
假设我们一直在寻找前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];
答案 5 :(得分: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