提取c#中的字符串部分
本文关键字:字符串部 提取 | 更新日期: 2023-09-27 17:57:40
我需要解析一列中的字符串记录,将其分解为两部分。我需要打破的记录的两个例子是:
- 第3.1.1行
- Qa.2.1
对于每个记录,我都要求最后一个"之前的所有内容以及最后一个"之后的所有内容例如,对于上面的#1,我需要:
代码=第3.1行
R值=1
我是c#的新手,已经尝试了以下操作,但没有得到想要的结果:
string ID = "Row.3.1.1;
int CodeIndex = ID.LastIndexOf(".");
string Code = ID.Substring(CodeIndex);
int ValueIndex = ID.IndexOf(".");
Rstring RValue = ID.Substring(ValueIndex);
试试这个方法:
class Program
{
static void Main(string[] args)
{
var firstTest = "Row.3.1.1";
var secondTest = "Qa.2.1";
Console.WriteLine(BuildFromString(firstTest));
Console.WriteLine(BuildFromString(secondTest));
Console.Read();
}
public static Extract BuildFromString(string input)
{
return new Extract
{
Code = input.Substring(0, input.LastIndexOf('.')),
RValue = input.Substring(input.LastIndexOf('.'))
};
}
public class Extract
{
public string Code { get; set; }
public string RValue { get; set; }
public override string ToString()
{
return $"Code: {Code} RValue:{RValue}";
}
}
}
很努力,但你的指数有点偏离。
string ID = "Row.3.1.1";
int CodeIndex = ID.LastIndexOf(".");
//get the first half which is from index 0 (the start) to where the last `.` was found
string Code = ID.Substring(0, CodeIndex);
//start from where the last '.' and move up one because we
//don't want to include the `.` in RValue
string RValue = ID.Substring(CodeIndex + 1);
您可能希望包括错误处理等(例如,如果字符串中没有.
.会发生什么)。但是,假设您有一个完美的字符串,上面的代码应该可以工作。
您不需要两个索引操作。(如果我正确阅读了要求)
string ID = "Row.3.1.1";
int codeIndex = ID.LastIndexOf(".");
string code = ID.Substring(0, codeIndex);
string rValue = ID.Substring(codeIndex + 1);
您已接近:
string ID = "Row.3.1.1;
int CodeIndex = ID.LastIndexOf(".");
string Code = ID.Substring(CodeIndex);
// int ValueIndex = ID.IndexOf(".");
Rstring RValue = ID.Substring(0, CodeIndex); //Here, (0, CodeIndex)
没有子字符串和lastindexof的另一种可能性:
var IDParts = ID.Split('.');
var RValue = IDParts[IDParts.Length-1];
var Code = ID.TrimEnd("." + RValue);
对于任何答案中的所有解决方案,请注意,如果没有",它们会抛出异常,或者在我的情况下会产生错误的结果在你的身份证上,所以你应该加一张支票。
正则表达式使此操作变得简单。不需要索引或偏移量。
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^(.*)'.([^'.]*)$");
string testString= "Row.3.1.1";
System.Text.RegularExpressions.GroupCollection groups = regex.Match(testString).Groups;
System.Console.WriteLine("Code = " + groups[1]);
System.Console.WriteLine("RValue = " + groups[2]);
我认为这是您正在寻找的代码:
string ID = "Row.3.1.1";
int CodeIndex = ID.LastIndexOf(".");
string Code = ID.Substring(0, CodeIndex);
string RValue = ID.Substring(CodeIndex + 1);
参见.Net Fiddle代码
此外,您可能还想了解MSDN上的Substring函数。