如果你有這樣的:讀字符串中的字符串
foreach(string n in txtList)
{
Console.WriteLine(n);
}
輸出:
[HKEY_Something_Something\.abc]
[HKEY_Something_Something\.defg]
[HKEY_Something_Something\.ijklmn]
如何獲得之間有什麼 「」和「]」?
如果你有這樣的:讀字符串中的字符串
foreach(string n in txtList)
{
Console.WriteLine(n);
}
輸出:
[HKEY_Something_Something\.abc]
[HKEY_Something_Something\.defg]
[HKEY_Something_Something\.ijklmn]
如何獲得之間有什麼 「」和「]」?
如果它總是遵循格式,改變你的代碼應該輸出w帽子你想要的:
foreach(string n in txtList)
{
int startindex = n.IndexOf(@"\.") + 2;
Console.WriteLine(n.Substring(startindex, n.Length-startindex-1));
}
簡單而有用:)謝謝! – 2012-02-15 10:33:30
嘗試
foreach(string n in txtList)
{
string str[] = n.Split('.');
if (str.Length > 0)
{
string s = str[str.Length-1];
Console.WriteLine(s.Substring(0, s.Length-1));
}
}
@Oliver:str在這裏是一個數組... – 2012-02-15 10:33:57
您可以使用正則表達式:
var s = @"[HKEY_Something_Something\.abc]";
var result = Regex.Match(s, @"(?<=\.)[^]]*(?=]$)")
// result == "abc"
正則表達式的簡短解釋:
(?<=\.) - preceded by a dot
[^]]* - anything which isn't a ']'
(?=]$) - followed by a ']' and the end of the string
var per = n.IndexOf("."); // may need to add +1 to get past . index.
var len = n.IndexOf("]") - per - 1;
var val = n.Substring(per, len);
答案很簡單:
int dotPosition = n.LastIndexOf(".") + 1; // +1 because we start AFTER the dot.
int bracketPosition = n.LastIndexOf("]"); // can do "n.Length - 2" too.
Console.WriteLine(n.Substring(dotPosition, bracketPosition - dotPosition));
更復雜的答案:使用正則表達式。
也可以!謝謝! :) – 2012-02-15 10:33:44
例如用正則表達式:
Match match = Regex.Match(n, @"\.(.*)\]");
string result = match.Groups[1].Value;
這取決於..有永遠只有一個點?一個反斜槓? – IanNorton 2012-02-15 10:14:37
閱讀關於正則表達式 – 2012-02-15 10:15:21