gpt4 book ai didi

c# - 有没有一种方法可以简化基于字符串中包含的值的设置?

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:17 24 4
gpt4 key购买 nike

目前我的代码是这样的,但我想知道是否有一种方法可以简化它。我正在寻找的是字符串“JLPT N1”、“JLPT N2”、“JLPT N3”、“JLPT N4”、“JLPT N5”之一,然后当我看到其中一个时,我将设置 a 的值phraseSources[seq].JishoJlpt

请注意,一次只能出现上述其中一项。

            if (nodes2[0].InnerText.Contains("JLPT N5"))
{
phraseSources[seq].JishoJlpt = "5";
}
if (nodes2[0].InnerText.Contains("JLPT N4"))
{
phraseSources[seq].JishoJlpt = "4";
}
if (nodes2[0].InnerText.Contains("JLPT N3"))
{
phraseSources[seq].JishoJlpt = "3";
}
if (nodes2[0].InnerText.Contains("JLPT N2"))
{
phraseSources[seq].JishoJlpt = "2";
}
if (nodes2[0].InnerText.Contains("JLPT N1"))
{
phraseSources[seq].JishoJlpt = "1";
}

如果有人可以建议我如何简化它,我将不胜感激。

最佳答案

您应该查看正则表达式

此方法将从您的文本中获取 int,然后您可以使用它。

    using System.Linq;
using System.Text.RegularExpressions;

public int ContainedNum(string s)
{
var match = Regex
.Match(s, (@"JLPT N(\d{1})"))
.Groups
.Cast<Group>()
.Skip(1) // the first match is the entire string not the group
.Single()
.Value;
var num = int.Parse(match);
return num;
}

这假定每个参数 始终遵循此模式并且不会大于 9。如果不是这种情况,您需要更保守地使用 Single() 并弄清楚如果不是这种情况您想要返回什么。

你可以这样使用它:

var text = nodes2[0].InnerText;
var num = ContainedNum(text);
phraseSources[seq].JishoJlpt = num.ToString();

关于c# - 有没有一种方法可以简化基于字符串中包含的值的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58364866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com