Читать строку в строку - PullRequest
0 голосов
/ 15 февраля 2012

Если у вас есть это:

foreach(string n in txtList)
{
    Console.WriteLine(n);
}

Вывод:

[HKEY_Something_Something\.abc]
[HKEY_Something_Something\.defg]
[HKEY_Something_Something\.ijklmn]

Как мне узнать, что находится между "."и "]"?

Ответы [ 6 ]

2 голосов
/ 15 февраля 2012

Если он всегда следует этому формату, изменение кода на это должно вывести то, что вы хотите:

foreach(string n in txtList)
{
  int startindex = n.IndexOf(@"\.") + 2;
  Console.WriteLine(n.Substring( startindex, n.Length-startindex-1));
}
0 голосов
/ 15 февраля 2012

Например с RegEx:

  Match match = Regex.Match(n, @"\.(.*)\]");  
  string result = match.Groups[1].Value;
0 голосов
/ 15 февраля 2012

Простой ответ:

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));

Более сложный ответ: используйте регулярные выражения.

0 голосов
/ 15 февраля 2012
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);
0 голосов
/ 15 февраля 2012

Вы можете использовать регулярное выражение:

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
0 голосов
/ 15 февраля 2012

Попробуйте

 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));
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...