我已经阅读了wiki和其他建议的材料,但我无法理解这个正则表达式。
要详细说明,我需要将一个句子分成单词,而只需要单词/值,这样我就可以将每个单词与其他单词中的其他单词进行比较。这意味着其“”对于保持美元符号非常重要,因为10美元不同于10美元,百分比相同,“汤姆”则带撇号。价值££&#只有在没有空格后才能删除&可用于公司名称,如B& Q和货币,货币符号本身与我的需求无关。
所以它会是:删除除$£€& +之外的所有标点符号 - 除非后跟空格,如果前面有空格则删除%。
然后我会用空格分成一个数组,它只是这个该死的正则表达式。
我有一个正则表达式白名单:
Regex.Replace(string, @"[^0-9a-zA-Z\s]+", "");
我只是无法弄清楚如何指定一个字符+空格或空格+字符,例如删除“$”但是当它的“$ 10”时我留下$我知道是哪个空格但我如何附加到我不知道的正则表达式。
答案 0 :(得分:2)
@Tom,当然你可以使用Regex,这是
的答案我想删除最初没有拆分,并且拥有1个正则表达式将比10个左右单独的string.removes更好。我需要。此外,我宁愿不只是因为人们不想帮忙而采取凌乱的做法,它就像这个网站不是要求帮助的问题......
以及如何使用 String.Split (如果它会更短,我会发布此评论)
var symbols = "£$€#&%+-";
var punctuationsChars = Enumerable.Range(char.MinValue, char.MaxValue - char.MinValue)
.Select(i => (char)i)
.Where(c => char.IsPunctuation(c))
.Except(symbols)
.ToArray();
string input = "leave £10 remove £ and leave 10% remove % ok";
var parts = input.Split(punctuationsChars)
.SelectMany(x => x.Split())
.Where(x => !(x.Length == 1 && symbols.Contains(x[0])))
.ToList();
因此,您不必使用正则表达式如果您不知道如何使用它。
输出:leave £10 remove and leave 10% remove ok
答案 1 :(得分:1)
您不需要正则表达式来执行此操作:
var newStr = new string(originalStr.Where(c => !",([*\"".Contains(c)).ToArray());