在c#中的字符串之间获取字符

时间:2017-04-07 08:38:49

标签: c# string

我正在尝试在相同的字符串之间获取字符串:

The texts starts here ** Get This String ** Some other text ongoing here.....

我想知道如何获得星星之间的字符串。我应该使用一些正则表达式或其他功能吗?

6 个答案:

答案 0 :(得分:4)

如果没有正则表达式,您可以使用IndexOf执行相同操作 这个将返回两个" **"之间的第一个字符串出现。与幻影空白。它还检查不存在符合此条件的字符串。

public string FindTextBetween(string text, string left, string right)
{
    // TODO: Validate input arguments

    int beginIndex = text.IndexOf(left); // find occurence of left delimiter
    if (beginIndex == -1)
        return string.Empty; // or throw exception?

    beginIndex += left.Length;

    int endIndex = text.IndexOf(right, beginIndex); // find occurence of right delimiter
    if (endIndex == -1)
        return string.Empty; // or throw exception?

    return text.Substring(beginIndex, endIndex - beginIndex).Trim(); 
}    

string str = "The texts starts here ** Get This String ** Some other text ongoing here.....";
string result = FindTextBetween(str, "**", "**");

我通常喜欢尽可能不使用正则表达式。

答案 1 :(得分:4)

您可以尝试Split

  string source = 
    "The texts starts here** Get This String **Some other text ongoing here.....";

  // 3: we need 3 chunks and we'll take the middle (1) one  
  string result = source.Split(new string[] { "**" }, 3, StringSplitOptions.None)[1];

答案 2 :(得分:2)

如果您想使用正则表达式this could do

.*\*\*(.*)\*\*.*

第一个也是唯一一个捕捉有明星之间的文字。

另一种选择是使用IndexOf来查找第一颗恒星的位置,检查后面的字符是否也是一颗恒星,然后再为第二颗恒星重复一遍。 Substring这些索引之间的部分。

答案 3 :(得分:0)

如果您可以在一个字符串中找到多个文本,则可以使用以下正则表达式:

\*\*(.*?)\*\*

示例代码:

string data = "The texts starts here ** Get This String ** Some other text ongoing here..... ** Some more text to find** ...";
Regex regex = new Regex(@"\*\*(.*?)\*\*");
MatchCollection matches = regex.Matches(data);

foreach (Match match in matches)
{
    Console.WriteLine(match.Groups[1].Value);
}

答案 4 :(得分:0)

您可以使用SubString:

String str="The texts starts here ** Get This String ** Some other text ongoing here";

s=s.SubString(s.IndexOf("**"+2));
s=s.SubString(0,s.IndexOf("**"));

答案 5 :(得分:0)

您可以使用split但这仅在该单词出现1次时才有效。

示例:

string output = "";
string input = "The texts starts here **Get This String **Some other text ongoing here..";
var splits = input.Split( new string[] { "**", "**" }, StringSplitOptions.None );
//Check if the index is available 
//if there are no '**' in the string the [1] index will fail
if ( splits.Length >= 2 )
    output = splits[1];

Console.Write( output );
Console.ReadKey();