如何使用trim函数裁剪列表内部

3

我正在尝试截断一个名为Input的项目(位于.json文件中的对象形式),该项目在foreach循环内部。

我目前拥有的代码是:

List<string> dhurl = new List<string>();

foreach (JObject item in jArray)
{
    dhurl.Add("https://" + (string)item.SelectToken("Input");
}
标签添加的是“sm-tiktoktrends.com”,我只想添加“tiktoktrends.com”,如何使用trim函数去掉“sm-”?
*请注意,所有的对象都需要移除"sm-"

1
你为什么认为 Trim 对于这个具体的问题会有帮助? - mjwills
3个回答

3
问题并没有明确指出所有值是否都以"sm-"开头。如果是这样,并且你愿意使用LINQ:

该问题没有明确定义所有值是否都以"sm-"开头。如果是的话,而且您愿意使用LINQ:

List<string> dhurl = jArray.Select(item => "https://" + ((string)item.SelectToken("Input")).Substring(3)).ToList();

否则,我可能会这样做:
List<string> dhurl = jArray
    .Select(item => (string)item.SelectToken("Input"))
    .Select(item => "https://" + (item.StartsWith("sm-") ? item.Substring(3) : item))
    .LoList();

以下是根据下面的评论提供的新示例:

List<string> dhurl = jArray
    .Select(item =>
        string.Format(
            "https://{0}/?sig={1}",
            ((string)item.SelectToken("Input")).Substring(3),
            (string)item.SelectToken("Signature")
        ))
    .LoList();

这很有帮助,谢谢。我还有一个问题要补充。所有“input”的值都以“sm-”开头,因此我想在将其放入foreach循环之前将其删除。我也意识到现在我将在URL中添加签名,例如dhurl.Add("https://" + (string)item.SelectToken("Input") + "/?sig=" + (string)item.SelectToken("signature"));,现在我该怎么做?- - beginnercoder99
我为签名添加了一个新示例。您所说的“在放入foreach循环之前”的意思我不太确定。我的示例中没有foreach循环。它们直接从现有列表构建新列表。 - dgasaway

1

你可能应该使用Substring(...)StartsWith(...)来代替Trim(...)

string input = item.SelectToken("Input").ToString();
if (input.StartsWith("sm-"))
{
    input = input.Substring(3);
}
dhurl.Add("https://" + input);

1

dhurl.Add($"https://{item.SelectToken("Input").Replace("sm-","")}")?

你需要添加这行代码到程序中吗?它会将一个以"sm-"开头的字符串替换为"https://",并将其添加到dhurl中。

2
“Replace” 将替换所有出现在 "sm-" 的内容,而不仅仅是第一个。 - Igor Goyda
这个不起作用 - 它说“Replace方法没有接受2个参数的重载”。 - beginnercoder99

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接