當前if語句在列中找到「開始」文本並獲取該行。我想知道:我如何能夠檢查字符串中的下一個字符是否是[
?例如,這與StartsWith
方法搜索數據表中的數據
foreach (DataRow r in queryDataTable.Rows)
{
if (r[0].ToString().StartsWith(queryString))
{
dt.ImportRow(r);
}
}
當前if語句在列中找到「開始」文本並獲取該行。我想知道:我如何能夠檢查字符串中的下一個字符是否是[
?例如,這與StartsWith
方法搜索數據表中的數據
foreach (DataRow r in queryDataTable.Rows)
{
if (r[0].ToString().StartsWith(queryString))
{
dt.ImportRow(r);
}
}
你可以嘗試正則表達式:
foreach (DataRow r in queryDataTable.Rows)
{
bool match = Regex.IsMatch(r[0].ToString(),".{1}\[.*",RegexOptions.IgnoreCase | RegexOptions.Compiled);
if (match) dt.ImportRow(r);
}
如果你的問題是如何找到具有第一屬性的所有行開始與查詢字符串+了「[ 「那麼爲什麼不把該char附加到查詢字符串呢?
這樣的:
foreach (DataRow r in queryDataTable.Rows)
{
if (r[0].ToString().StartsWith(queryString + "["))
{
dt.ImportRow(r);
}
}
public bool PostConditionIsChar(DataRow dr, string query, char charToCheck)
{
string firstCol = dr[0].ToString();
return firstCol.StartsWith(query) ? firstCol.Replace(query, "").Length > 0 && firstCol.Replace(query, "").First() == charToCheck : false;
}
使用
dt.Rows.Cast<DataRow>().Where(row => PostConditionIsChar(row, queryString, '[')).ToList().ForEach(rowToAdd => dt.ImportRow(rowToAdd))
這應該爲你做它。
這是* first *字符,而不是* next *字符。 –
@MattEllen我現在看到了...自從我開始回答以來,問題變得更加清晰:P – LukeHennerley
@MattEllen我的編輯應該現在就做。 – LukeHennerley
究竟是什麼問題?我看不到一個「?」 – LukeHennerley