Regex以选择特定字符之前的所有逗号
本文关键字:选择 字符 Regex | 更新日期: 2023-09-27 18:10:35
我有一个可怕的时间与正则表达式。我承认这很糟糕,但是当我需要的时候,我没有足够地使用它们来成为真正优秀的人。基本上,由于应用程序的运行方式,我将.csv文件的内容拉出为字符串。我需要在已经存在的行上面和下面插入一个新的行。列的数量可以根据报告而变化。我想做的是抓取所有逗号,没有任何其他字符(包括空格),直到字符串中的第一组'r'n。这样我就有了所有的列,我可以在上面插入一个空白行,并用我需要的东西填充这些列。下面是一个。csv文本的示例:
"Date, Account Code, Description, Amount'r'n23-Apr-13,12345,Account1,$12345'r'n"
我希望正则表达式抓取的内容:
",,," or ",,,'r'n"
我似乎就是不明白。谢谢你。
你不需要一个正则表达式。
string firstLine = file.ReadLines().First();
int numCommas = firstLine.Count(c => c == ',');
string commaString = new String(',', numCommas);
如果您没有访问file.ReadLines()
方法的权限,您可以使用以下链接:
string firstline = test.Substring(0, test.IndexOf(Environment.NewLine));
您实际上不需要使用正则表达式来使代码复杂化,就可以实现您想要的功能:计算列数。
这里有一个非常简单的方法:
String textline = csvtext.Substring(0, csvtext.IndexOfAny(Environment.NewLine.ToCharArray()));
int columns = textline.Split(',').Length;
现在columns
变量有您的总列数。
第一行从CSV文本中抓取第一行。第二行将该文本分割成一个以逗号(,
)分隔的数组,并返回总数。
你可以使用下面的正则表达式(?<=['d'w's])('r|'n|,)(?=['d'w's'W])
要匹配和新建行字符,使用可以使用Regex.Replace("inputstring","regexpattern","replacechar", RegexOptions.IgnoreCase)
这可以通过字符串操作本身来完成
string[] strs= inputstr.split(new string[]{"'n","'r",","}, StringSplitOptions.RemoveEmptyEntries);
foreach(string str in strs)
{
// do you part
}