把一个字符串里的所有数字去掉.只留下字母
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把一个字符串里的所有数字去掉.只留下字母相关的知识,希望对你有一定的参考价值。
以BASIC语言为例,代码如下:Function NumberDroping
STRLength=len(STR_Main)
For i = 1 to STRLength
Var_ASC =Asc(Mid(STR_Main,i,1)) '检查每一位字符的ASCII码。
If Var_ASC >47 or Var_ASC <58 Then '判断截取的字符如果是数字执行下面代码。
STR_Main =Left(STR_Main,i-1) & Mid(STR_Main,i+1,STRLength-i+1) '操作字符串去掉数字
STRLength =STRLength -1 '去掉数字后,让字符串的长度减1,避免空循环。
End if
Next i
End Function追问
不好意思,没有说明 是java语言
追答楼上几个全是做网页的,用JАVA SCRIPT的,编程基础不强,所以那种思想不要学!
写代码是要让人容易看懂,要规范化,要有可读性!这是学编程语言的重点,除了THINKING(思想)以外的就是这些了。最重要的当然是一门编程语言的THINKING(思想)和构架!
数字去掉,只留字母,JАVA代码如下:
public static void main(String[] args)
String strmain;
String strmain = strmain.replaceAll("[\\d]+", "");
System.out.println(strmain);
replaceAll("","")是用替换字符的方法,("前面是替换的条件","后面是替换成什么")
[\\d+]d是0-9的数字,+说明数字不止出现一次。
附带说明一点,用匹配符会大大的降低效率……
顶下 参考技术B $str = preg_replace("/\d/i",'',$str); 参考技术C string str = "1a2b3c4d56efg";
str = Regex.Replace(str, @"[^a-zA-Z]+", "");
函数只返回字符串中的字母数字字符?
【中文标题】函数只返回字符串中的字母数字字符?【英文标题】:Function to return only alpha-numeric characters from string? 【发布时间】:2011-07-09 02:53:06 【问题描述】:我需要第二个功能相同但只返回字母字符 A-Z。
非常感谢任何帮助。
【问题讨论】:
这些在哪个 Unicode 规范化形式中,您为什么要这样做? 当您说 A-Z 和“字母数字”时,您的意思是真的只有 A-Z 还是要匹配所有语言的所有字母,包括外语和过时的脚本? 如果您这样做是为了进行不区分重音的字符串比较,那么您做错了。 它不只是“来自所有语言”。是英文的。英语使用拉丁文字。有unichars '\pLatin' '\pAlphabetic' '[^A-Za-z]' | wc -l
== 1192 个拉丁字母但不是 A-Z 的代码点。人们普遍认为 ASCII 对英语来说就足够了。不是,这就是为什么写 A-Z 有一种代码味道的原因。
@Scott B:英语不仅仅使用 A-Z 的 26 个字母。例如,单词 ressumé 包括 é。也许您可以解释一下您要做什么,因为这可能会帮助您获得更好的答案。
【参考方案1】:
警告:请注意,英语不仅限于 A-Z。
尝试this 删除除 a-z、A-Z 和 0-9 之外的所有内容:
$result = preg_replace("/[^a-zA-Z0-9]+/", "", $s);
如果您对字母数字的定义包括外语字母和过时的脚本,那么您将需要使用 Unicode 字符类。
尝试this 只留下 A-Z:
$result = preg_replace("/[^A-Z]+/", "", $s);
警告的原因是像 résumé 这样的词包含字母 é
不会被匹配。如果要匹配特定的字母列表,请调整正则表达式以包含这些字母。如果要匹配所有字母,请使用 cmets 中提到的相应字符类。
【讨论】:
不,字母数字是[\pAlphabetic\pNumeric]
。我忘记了 PCRE 字母属性,但你可以用 [\pL\pM\pN]
来近似它。
@tchrist:我认为因为他特别提到了 A-Z,所以他只想匹配那个,尽管我承认这个问题在这一点上可能会更清楚。我会要求澄清。
@Mark,我并没有与你答案的第二部分争论,尽管如果他没有先规范地分解字符串,它就不会正常工作。我在和第一部分争论。此外,我尝试始终正确处理 any 数据的正则表达式,而不仅仅是发霉的旧 ASCII。 :) 因此,千禧年的这一边,[A-Z]
总是错的,有时。
@Mark Byers,我明白了……是的,我更喜欢i
,但我只需要担心英语人口统计……我忘记了很多人必须考虑其他语言。顺便说一句,我刚刚注意到您是从未问过 1 个问题的最高代表用户。甚至 Jon Skeet 也曾问过问题!
为什么正则表达式的末尾有一个+?如果你删除它,它会不会......一样吗?【参考方案2】:
除了preg_replace
,您始终可以通过filter_var()
函数与FILTER_SANITIZE_STRING
一起使用PHP's filter functions。
【讨论】:
PHP 是否可以访问 ISO Stringprep 算法?我知道 Perl 和 Java 可以。 我相信字符串过滤功能主要适用于 7 位 ASCII,但不要引用我的话。 拜托,您能告诉我们使用FILTER_SANITIZE_STRING
执行用户要求的明确方式吗?据我所知,可以通过这种方式归档的最接近的是FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH
,但这不仅会留下字母和数字,还会留下点、斜线、百分比等等。
它看起来更像是评论而不是答案。写答案时给出适当的解释。
不幸的是,我不相信那里有一个实际的 FILTER_SANITIZE 到字母数字。相当大的遗漏。以上是关于把一个字符串里的所有数字去掉.只留下字母的主要内容,如果未能解决你的问题,请参考以下文章