我正在尝试在相同的字符串之间获取字符串:
The texts starts here ** Get This String ** Some other text ongoing here.....
我想知道如何获得星星之间的字符串。我应该使用一些正则表达式或其他功能吗?
答案 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();