【问题标题】:Retrieving specific characters from string separated by a delimiter从由分隔符分隔的字符串中检索特定字符
【发布时间】:2015-10-30 15:34:45
【问题描述】:

我想检索由特定分隔符分隔的字符。

例子:

在这里,我想访问“”分隔符之间的字符串。但我想要“”之间的第二组字符。

abc"def"ghi"jklm // Output : ghi

"hello" yes "world" // output : world

我怎样才能得到它? 我知道我们可以使用拆分。但有时字符串可能不以 " 字符开头。

谁能帮我解决这个问题?

【问题讨论】:

  • 好像没有规律。如果第一个是 ghi,那么它是 b/w 的第二个和第三个引号。如果世界为 2nd,它是 b/w 3rd 和 4th 报价。似乎不清楚“第二组字符”是什么意思。
  • 如果只有单引号作为分隔符,第二个输出应该是“yes”根据'但我想要第二组字符'
  • 即使在第一行,第二个值也是def,而不是ghi。如果您想要 第三个 字符集,您的要求将是有意义的
  • 不,ghi 是有道理的,它是引号内的第二组。 abc 不在里面,所以 def 是第一个。
  • 我想要第二组带引号的字符。对于第一行 ghi 在引号内。因为第二行世界在引号内。

标签: c# string delimiter


【解决方案1】:

您可以找到第一个报价,然后从那里使用您的方法:

var firstQuote = str.IndexOf('"');

var startsWithQuote = str.Substring(firstQuote);

【讨论】:

  • 什么办法? OP 没有办法。
  • OP 将他的问题描述为有时没有 " 作为字符串中的第一个字符,因此使用 string.Split() 会为他做不同的事情。因此我为他提供了一种修剪方法" 之前的字符
【解决方案2】:
string valueStr = "abc\"def\"ghi\"jklm";
var result = valueStr.Split('"')[2];
Console.WriteLine(result);

https://dotnetfiddle.net/T3fMof

显然在访问数组元素之前检查它们

【讨论】:

  • 第一个例子通过了,第二个例子失败了。
  • 如果我错了,请纠正我,但在第二个输出中,这将返回“是”,而不是 OP 所说的需要“世界”。
  • 现在你的小提琴是对的,但不是要求的输出。
  • 是的,如果您想要第二组,那么它将显示“是”。正如你之前提到的,我同意你的看法,他的模式不匹配......除非我在这里错过了重点
  • 实际上你的答案几乎可以工作,但会返回 third 字符串 not 第二个字符串。
【解决方案3】:

你可以使用正则表达式来匹配它们:

        var test = "abc\"def\"ghi\"jklm";
        var test2 = "\"hello\" yes \"world\"";

        var match1 = Regex.Matches(test, ".+\"(.+)\"");
        var match2 = Regex.Matches(test2, ".+\"(.+)\"");

        Console.WriteLine("Match1: " + match1[0].Groups[1].Captures[0]);
        Console.WriteLine("Match2: " + match2[0].Groups[1].Captures[0]);
        // Match1: ghi
        // Match2: world

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多