首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除特殊字符并同时排除单词

删除特殊字符并同时排除单词
EN

Stack Overflow用户
提问于 2015-03-26 13:22:55
回答 3查看 477关注 0票数 2

我们需要运行一个应用程序,将处理超过1000000个网址。我不能以单独的方式替换段中的特殊字符,因为这将是一个缓慢的过程。这就是为什么我需要在一个调用中处理所有的url。

我需要删除url中的特殊字符(在url的片段中),问题是这些片段是名称,可以包含/。

当我构建时,url将用{-}连接这些段,然后用/替换。

代码语言:javascript
复制
var newUrl = RemoveSpecialCharacters(url).Replace("{-}","/")

这是我的Regex

代码语言:javascript
复制
(?:(?<!")\{\-\}(?!"))|[^0-9a-zA-Z\s]

此部分获取特殊字符^0-9a-zA-Z\s,但我不能使表达式忽略{-}

这是我在Regex中使用的url示例。

{-}哈瓦苏湖城市{-}金曼地区{-}哈湖/瓦苏市{-}北角-by-Read家{-}hola{*e}s!fsd3$^gdfg%代码:

代码语言:javascript
复制
public static string RemoveSpecialCharacters(string input)
{
    Regex r = new Regex("(?:(?<!")\{0\}(?!"))|[^0-9a-zA-Z\s]", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
    return r.Replace(input, " ");
}

结果必须是:

EN

回答 3

Stack Overflow用户

发布于 2015-03-26 13:33:06

代码语言:javascript
复制
String s = "hola !@ew#$%^&er3523wrerffser*()12345678{}#0#word{0}";
String r = Regex.Replace(s, @"(\{0})|[^a-zA-Z0-9\s]+", "$1");
Console.WriteLine(r); //=> "hola ewer3523wrerffser123456780word{0}"
票数 1
EN

Stack Overflow用户

发布于 2015-03-26 13:27:10

您的正则表达式:(?:(?<!")\{0\}(?!"))|[^0-9a-zA-Z\s]您允许0-9,而忽略0?为什么这么困惑?新的正则表达式:(?:(?<!")\(?!"))|[^1-9a-zA-Z\s]

票数 0
EN

Stack Overflow用户

发布于 2015-03-26 13:32:20

似乎您正在尝试将{0}以外的所有特殊字符替换为空字符串。然后你可以尝试下面的正则表达式。

代码语言:javascript
复制
replaced = Regex.Replace(yourString, @"(\{0})|[^0-9a-zA-Z\s]", "$1");

这将首先捕获{0}部分,然后根据此[^0-9a-zA-Z\s]模式匹配所有其他字符,即任何字符,但不是字母数字或空格。

DEMO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29271600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档