在字符串c#

时间:2015-08-12 08:42:06

标签: c# regex string char

我有一个包含类似内容的字符串"' asd asd / * ... asd' ASD ..." 我只想检索从'开始的值。并结束相同的字符'。因此,从该字符串开始,值将为" asd asd / * ... asd"

我尝试使用下面的代码,但它不起作用。

string HDtext = new string(TextChar.SkipWhile(c => !Char.IsSymbol(c))
                                   .TakeWhile(c => Char.IsLetter(c) ||
                                                   c == '*' ||
                                                   c == '/' ||
                                                   c == ' ')
                                   .ToArray());

有人知道如何正确地检索它吗?

4 个答案:

答案 0 :(得分:3)

我会在这里使用Regex

string input = "'asd asd asd / * ... asd ' asd...";
var output = Regex.Match(input, @"'(.+?)'").Groups[1].Value;

答案 1 :(得分:1)

String.Split将是一个选项

string input = "'asd asd asd / * ... asd ' asd...";
string result = input.Split('\'')[1];

答案 2 :(得分:0)

您可以获取所需char的第一个和最后一个匹配项的索引,然后只需获取它们之间的子字符串。像这样,例如:

var __text = "'asd asd asd / * ... asd' asd...";
var __startIndex = __text.IndexOf("'") + 1;
var __length = __text.LastIndexOf("'") - __startIndex;

var __subString = __text.Substring(__startIndex, __length);  

答案 3 :(得分:0)

如果你想使用LINQ:

string result = new string(str.SkipWhile(c => c != '\'')
                              .Skip(1)
                              .TakeWhile(c => c != '\'').ToArray());

如果有超过2个'字符,并且您希望获得第一个和最后一个之间的所有内容:

string result = new string(str.SkipWhile(c => c != '\'').Skip(1)
                              .Reverse()
                              .SkipWhile(c => c != '\'').Skip(1)
                              .Reverse()
                              .ToArray());