【问题标题】:Remove characters before any special characters c#删除任何特殊字符之前的字符c#
【发布时间】:2012-05-24 13:16:06
【问题描述】:

我正在尝试删除字符串中任何非字母数字字符之前的字符。例如,假设您有一个名字“James Ebanks-Blake”,我可以使用以下方法将其拆分为一个数组:

var s = "James Ebanks-Blake".Split(' ');

即使有不止一个空格,也只会产生更多的数组索引。 所以我需要做的是遍历所有数组,找到带有特殊字符的索引,然后删除所有索引和特殊字符。

谁能帮助我?

【问题讨论】:

  • 您对上述内容的预期输出是什么? “布莱克”?您认为什么是“特殊”角色?
  • 在这种情况下我只想得到“Blake”。所以特殊字符将是那些不是直通 z 或任何数字的字符。以这种方式,如果此人的名字是 Scarlet O'Hara,则相同的代码将起作用。 (这会产生“Hara”,虽然这可能是微不足道的,但在某些情况下它是相关的......
  • 所以您会期望 Scarlet 示例中只有“Hara”?

标签: c# regex


【解决方案1】:

这里有效

[-^$#](.*)

只需在字符类中添加您认为的特殊字符

您想要的字符串将在第 1 组中

resultString = Regex.Match(subjectString, "[-^$#](.*)", RegexOptions.Singleline).Groups[1].Value;

【讨论】:

  • 这个似乎可以工作,除非我在 Scarlett O'Hara 版本上尝试过。我没有产生任何结果。看起来正则表达式需要一些调整。 (我不知道正则表达式中发生了什么)。
  • 只需在字符类中添加您认为特殊的内容,即在 [ 和 ] 之间。因此,对于 Scarlett O'Hara,您需要添加单引号 ' 并变为 [-^$#']
  • 对...我现在明白了...“字符类”在括号内...所以我在其中添加了 ' 并且它起作用了!惊人的。非常感谢!!
【解决方案2】:

[-'](.*)

这应该在-' 之后获取任何内容。如果需要,您可以在 [ ] 部分添加更多字符。只需确保避开特殊的正则表达式即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    相关资源
    最近更新 更多