Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从字符串的开头和结尾修剪所有非字母数字和数字字符?_C#_.net_String_.net 4.0_Cultureinfo - Fatal编程技术网

C# 如何从字符串的开头和结尾修剪所有非字母数字和数字字符?

C# 如何从字符串的开头和结尾修剪所有非字母数字和数字字符?,c#,.net,string,.net-4.0,cultureinfo,C#,.net,String,.net 4.0,Cultureinfo,编辑:我更改了标题,以具体反映我正在尝试做的事情 是否有一种方法可以检索.NET中当前区域性的所有字母数字字符(或者最好是字母表)?我的设想是,我有几个字符串需要从中删除所有数字和非字母字符,我不太确定在尊重英语以外语言的字母表的同时如何实现这一点(不需要为所有受支持的.NET语言或至少我们当前客户的语言lol创建所有字母字符的数组) 更新: 具体地说,我要做的是从字符串的开头到第一个字母字符,然后从最后一个字母字符到字符串的结尾修剪所有非字母字符。因此,对于en US中的一个随机示例,我想转到

编辑:我更改了标题,以具体反映我正在尝试做的事情

是否有一种方法可以检索.NET中当前区域性的所有字母数字字符(或者最好是字母表)?我的设想是,我有几个字符串需要从中删除所有数字和非字母字符,我不太确定在尊重英语以外语言的字母表的同时如何实现这一点(不需要为所有受支持的.NET语言或至少我们当前客户的语言lol创建所有字母字符的数组)

更新:

具体地说,我要做的是从字符串的开头到第一个字母字符,然后从最后一个字母字符到字符串的结尾修剪所有非字母字符。因此,对于en US中的一个随机示例,我想转到:

()&*1@^#47*^#21%Littering aaaannnnd(*&^1#*32%#**)7(#9&^
具体如下:

Littering aaaannnnd
这对于英语来说足够简单,因为它是我的第一语言,但实际上在任何文化中,我都需要能够从字符串中删除数字和其他非字母数字字符

   string something = "()&*1@^#47*^#21%Littering aaaannnndóú(*&^1#*32%#**)7(#9&^";
   string somethingNew = Regex.Replace(something, @"[^\p{L}-\s]+", "");
这就是你要找的吗


编辑:添加以允许使用其他语言字符。这将使用regex方法输出乱扔垃圾的aaaanndó

,这应该是:

string input = "()&*1@^#47*^#21%Littering aaaannnnd(*&^1#*32%#**)7(#9&^";
string result = Regex.Replace(input, "(?:^[^a-zA-Z]*|[^a-zA-Z]*$)", ""); //TRIM FROM START & END
不使用正则表达式: 在Java中,您可以执行以下操作:

while (true) {
    if (word.length() == 0) {
        return ""; // bad
    }

    if (!Character.isLetter(word.charAt(0))) {
        word = word.substring(1);
        continue; // so we are doing front first
    }
    if (!Character.isLetter(word.charAt(word.length()-1))) {
        word = word.substring(0, word.length()-1);
        continue; // then we are doing end
    }
    break; // if front is done, and end is done
}

如果您使用的是其他东西,那么java,替换Character.isleter非常简单,只需搜索字符编码,您就会找到字母字符的整数值,您可以使用它来执行此操作。

Duplicate-您可以展示一些删除非字母字符所需的不同字符的示例吗我将用一个例子更新我的问题,以明确说明我要完成的任务,因此请不要将此标记为重复。只是注意到你在之前和之后都说了些什么。此示例还将删除中间的所有非法字符。因此,如果Littering Aaannd是Li@34tterin98(45 aann$45)nnd它仍然会出来乱扔垃圾和。。。我不确定这是否对你有效。他说他想要一个适用于所有文化的解决方案,而不仅仅适用于我们英语。想象一下,他希望西里尔文字符在俄罗斯文化中可以使用,法文字符在法文中可以使用,等等。谢谢Shlomo,我已经更新了我的答案,以接受其他语言字符。\p{L}或\p{Letter}:任何语言的任何字母\s:空间。将其放入[^…]意味着它将匹配。。。这是不对的。这也将从字符串中间删除非字母和数字字符。OP在标题和问题正文中都明确指出,它只应从字符串的开头和结尾删除这些字符。请参见上文@Shlomo的评论,美国英语并不是我唯一需要它的文化。@AlexanderMiles请检查我上面的答案。我已经把它更新到我希望对你有用的地方。这也会从中间修剪,这不是OP的意图。