文件的值我有串每個包含存儲這樣RowKey值:如何可以解析出現一些地方在使用C#
data-RowKey=029
這在每個文件中只出現一次。有什麼方法可以用C#函數獲取數字,或者我必須自己編寫某種選擇。我有一位建議linq的隊友,但我不確定這是否可以用於字符串,我不知道如何使用它。
更新:
對不起,我改變了這種從文件的字符串。
文件的值我有串每個包含存儲這樣RowKey值:如何可以解析出現一些地方在使用C#
data-RowKey=029
這在每個文件中只出現一次。有什麼方法可以用C#函數獲取數字,或者我必須自己編寫某種選擇。我有一位建議linq的隊友,但我不確定這是否可以用於字符串,我不知道如何使用它。
更新:
對不起,我改變了這種從文件的字符串。
假設它僅在存在一次一個文件,我甚至會拋出一個異常,否則:
String rowKey = null;
try
{
rowKey = File.ReadLines(path)
.Where(l => l.IndexOf("data-RowKey=") > -1)
.Select(l => l.Substring(12 + l.IndexOf("data-RowKey=")))
.Single();
}
catch (InvalidOperationException) {
// you might want to log this exception instead
throw;
}
編輯:用繩子簡單的方法,以第一次出現這始終是一個長度爲3:
rowKey = text.Substring(12 + text.IndexOf("data-RowKey="), 3);
如果它在字符串而不是文件中,我怎麼能這樣做? – Alan2
@Gemma:編輯我的答案。 –
Linq在這裏並沒有真正幫助你。使用正則表達式來提取數:
data-Rowkey=(\d+)
更新:
Regex r = new Regex(@"data-Rowkey=(\d+)");
string abc = //;
Match match = r.Match(abc);
if (match.Success)
{
string rowKey = match.Groups[1].Value;
}
代碼:
public string ExtractRowKey(string filePath)
{
Regex r = new Regex(@"data-Rowkey=(\d+)");
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Match match = r.Match(line);
if (match.Success) return match.Groups[1].Value;
}
}
}
對不起Stefan你能告訴我,如果它只是一個字符串變量,我該如何做到這一點?例如string abc =「..........」;是來源。 – Alan2
Regex g = new Regex(@"data-RowKey=(?<Value>\d+)");
using (StreamReader r = new StreamReader("myFile.txt"))
{
string line;
while ((line = r.ReadLine()) != null)
{
Match m = g.Match(line);
if (m.Success)
{
string v = m.Groups["Value"].Value;
// ...
}
}
}
如果它不在文件中並且僅在變量中。我怎麼能這樣做? – Alan2
string myVar =「
假設以下
以下是代碼片段
var fileNames = Directory.GetFiles("rootDirPath");
var tuples = new List<Tuple<String, int>>();
foreach(String fileName in fileNames)
{
String fileData =File.ReadAllText(fileName) ;
int index = fileData.IndexOf("data-RowKey=");
if(index >=0)
{
String numberStr = fileData.Substring(index+12,3);// ASSUMING data-RowKey is always found, and number length is always 3
int number = 0;
int.TryParse(numberStr, out number);
tuples.Add(Tuple.Create(fileName, number));
}
}
你知道這樣的值總是要上? –