【发布时间】:2020-06-26 17:15:12
【问题描述】:
所以我想在一个字符串中读出 C# 中的所有匹配项并使用它。意味着我需要部分字符串的位置,但我不知道如何。示例:
主字符串可以如下所示:
目前在线有 %count{"only_groups":"1, 2, 3","ignore_channels":"1, 2, 3"}% 支持者,%count{"ignore_channels":"1, 2, 3 ","querys":"false"}% 其中是 afk。这些是积极的支持者:%list{"querys":"false","only_groups":"1, 2, 3"}%
从内容上看,这个字符串没有意义,但我想你可以理解我所说的这些字符串的意思。除了 %count% 和 %list% 之外,还有更多可能的变量
现在我想保留所有这些变量并替换一些东西。
我已经有以下代码,但它只会替换一个变量,并且如果它是完全小写的,它只会识别 %count% 变量:
int pFrom = channel_name.IndexOf("%count{") + "%count{".Length;
int pTo = channel_name.LastIndexOf("}%");
字符串结果 = channel_name.Substring(pFrom, pTo - pFrom);
记录器.信息(结果);
字符串 json2 = @"{" + 结果 + "}";
JObject o2 = JObject.Parse(json2);
foreach(o2.Properties() 中的 JProperty 属性)
{
var pname = property.Name;
if (pname == "only_groups")
{
only_groups = property.Value.ToString();
}
否则 if (pname == "ignore_groups")
{
ignore_groups = property.Value.ToString();
}
else if (pname == "only_channels")
{
only_channels = property.Value.ToString();
}
否则 if (pname == "ignore_channels")
{
ignore_channels = property.Value.ToString();
}
else if (pname == "away")
{
away = property.Value.ToString();
}
else if (pname == "querys")
{
查询 = property.Value.ToString();
}
}
var serverVar = (await fullClient.GetServerVariables()).Value;
if (query.Equals("only"))
{
channel_name = "用户在线:" + serverVar.QueriesOnline;
}
else if (query.Equals("ignore"))
{
channel_name = "用户在线:" + (serverVar.ClientsOnline - serverVar.QueriesOnline);
}
别的
{
channel_name = "用户在线:" + serverVar.ClientsOnline;
}
我希望人们理解我将要做什么。我的英语不是最好的
【问题讨论】:
-
你如何表示百分比符号,就像我想说“购买时节省 50%!”在你的字符串中?