簡體   English   中英

如何在C#中獲取子字符串的值

[英]How to get back value of substring in c#

我想從字符串getBack參數為:

Lorem ipsum dolor sit amet, %param% consectetur adipiscing elit. Ut placerat risus vitae augue vestibulum imperdiet. Nullam ac urna pellentesque purus hendrerit convallis. Morbi bibendum augue sed mi faucibus, sit amet scelerisque augue interdum. Aenean iaculis lacus ut sapien imperdiet mollis.

我嘗試使用:

texte.Split(new char[] {'%'});

它只是拆分了我的文本,我怎樣才能用開始字符和結束字符分開?

以下正則表達式應有所幫助:

var regex = new Regex(@"%(?<param>.*?)%");
var match = regex.Match("Lorem ipsum dolor sit amet, %param% consectetur adipiscing elit. Ut placerat risus vitae augue vestibulum imperdiet. Nullam ac urna pellentesque purus hendrerit convallis. Morbi bibendum augue sed mi faucibus, sit amet scelerisque augue interdum. Aenean iaculis lacus ut sapien imperdiet mollis.");
if(match.Success)
{
    string result = match.Groups["param"].Value;
}

如果有多個匹配項,則以下代碼將有所幫助:

string subject = "Lorem ipsum dolor sit amet, %param% consectetur %454% adipiscing elit. Ut placerat risus vitae augue vestibulum imperdiet. Nullam ac urna pellentesque purus hendrerit convallis. Morbi bibendum augue sed mi faucibus, sit amet scelerisque augue interdum. Aenean iaculis lacus ut sapien imperdiet mollis.";
var matches = Regex.Matches(subject, @"%(?<param>.*?)%");
foreach (Match match in matches)
{
    string result = match.Groups["param"].Value;
}

這應該工作..

string str = "Lorem ipsum dolor sit amet, %param% consectetur adipiscing elit. Ut placerat risus vitae augue vestibulum imperdiet. Nullam ac urna pellentesque purus hendrerit convallis. Morbi bibendum augue sed mi faucibus, sit amet scelerisque augue interdum. Aenean iaculis lacus ut sapien imperdiet mollis.";
var param = str.Substring(str.IndexOf('%') + 1, str.IndexOf('%', (str.IndexOf('%') + 1)) - str.IndexOf('%') - 1);

您可以使用foreach -loop來執行此操作,盡管它可能不是很有效,具體取決於字符串的長度。

string input = "Lorem ipsum dolor sit amet, %param% consectetur adipiscing elit. Ut placerat risus vitae augue vestibulum imperdiet. Nullam ac urna pellentesque purus hendrerit convallis. Morbi bibendum augue sed mi faucibus, sit amet scelerisque augue interdum. Aenean iaculis lacus ut sapien imperdiet mollis."
StringBuilder param = new StringBuilder();
List<string> params = new List<string>();
bool writingParam = false;

foreach(char c in input) {
  if(!writingParam && c == '%') {
    writingParam = true;
  }
  else if(writingParam) {
    if(c != '%') {
      param.Append(c);
    }
    else {
      params.Add(param.ToString());
      param = new StringBuilder();
      writingParam = false;
    }
  }
}

您將最終得到包含所有包含在%中的字符串的字符串列表。

如果字符串中只有一個%param%,則可以使用indexOf和lastIndexOf找到它

int len = input.Length;
int pos1 = input.IndexOf("%");
int pos2 = input.LastIndexOf("%");

string response = "";
if (pos1 != -1 && pos2 != -1 && (pos2 >= pos1))
{
    response = s.Substring(pos1 + start.Length, pos2 - pos1 - start.Length);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM