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

本文关键字:数字字符 数字 修剪 字符串 结尾 开头 | 更新日期: 2023-09-27 18:18:58

编辑:我改变了标题,以反映我想要做的事情。

是否有一种方法可以检索.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]+", "");

这是你要找的吗?

编辑:添加允许其他语言字符。这将输出垃圾aaaannnndóú

使用regex方法,这应该是:

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。isLetter非常直接,只需要搜索字符编码就能找到字母字符的整数值,你可以用它来做