n*********1 发帖数: 111 | 1 例如, 617-123-5555符合电话号码,而abc-456-1234和617--1235555不符合电话号码。
请问要怎么写程序? |
c*********3 发帖数: 197 | 2 菜鸟回答你这个问题。首先问题不清楚。你是用什么写。
最简单的:
\d{3}-\d{3}-\d{4} |
n*********1 发帖数: 111 | 3 就是用户输入一串字符,然后判断是否符合电话号码要求。
如果用户输入123-456-7890 或者 (123)456-7890这类的都符合。
用linux语言设计程序来判断, 符合就输出yes, 不符合就输出no。
【在 c*********3 的大作中提到】 : 菜鸟回答你这个问题。首先问题不清楚。你是用什么写。 : 最简单的: : \d{3}-\d{3}-\d{4}
|
l****g 发帖数: 249 | 4 $ str=`echo "456-456-1234"|sed "s/[0-9]/%/g"`
$ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi
$
$ str=`echo "abc-456-1234"|sed "s/[0-9]/%/g"`
$ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi
NOT PHONE NUMBER
$
$ str=`echo "617--1235555"|sed "s/[0-9]/%/g"`
$ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi
NOT PHONE NUMBER
码。
【在 n*********1 的大作中提到】 : 例如, 617-123-5555符合电话号码,而abc-456-1234和617--1235555不符合电话号码。 : 请问要怎么写程序?
|
a9 发帖数: 21638 | 5 你直接从网上找个正则表达式吧。
美国区号和电话都没有1开头的,你举的这个例子就不符合。
【在 n*********1 的大作中提到】 : 就是用户输入一串字符,然后判断是否符合电话号码要求。 : 如果用户输入123-456-7890 或者 (123)456-7890这类的都符合。 : 用linux语言设计程序来判断, 符合就输出yes, 不符合就输出no。
|
z*****k 发帖数: 600 | 6 如果在email给电话号码,人可能写的不让机器自动识别。你的如果不是和人挑战的话
,没有什么困难。不过有的国家号码会像抽奖号码. |
n*********1 发帖数: 111 | 7 这串数字是用户输入的,我们要read进来,请问这样要怎么写?
%代表数字吗
【在 l****g 的大作中提到】 : $ str=`echo "456-456-1234"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : $ : $ str=`echo "abc-456-1234"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : NOT PHONE NUMBER : $ : $ str=`echo "617--1235555"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : NOT PHONE NUMBER
|
p****u 发帖数: 2422 | 8 $ str=`echo "%%%-%%%-%%%%"|sed "s/[0-9]/%/g"`
$ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi
$
【在 l****g 的大作中提到】 : $ str=`echo "456-456-1234"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : $ : $ str=`echo "abc-456-1234"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : NOT PHONE NUMBER : $ : $ str=`echo "617--1235555"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : NOT PHONE NUMBER
|
l*****s 发帖数: 2109 | 9 一般都是正则表达式了。
但是,原来看过一个说法,理论上,不可能有正确的解法。
我非CS,不懂。 |
c*****m 发帖数: 1160 | 10
你这个两个括号(123)是中文全角的括号。你确定这样的符合电话号码要求?句号
123.456.7890符合么?
你自己要先有明确的定义,怎样的符合,怎样的不符合,才能考虑编程问题。
【在 n*********1 的大作中提到】 : 就是用户输入一串字符,然后判断是否符合电话号码要求。 : 如果用户输入123-456-7890 或者 (123)456-7890这类的都符合。 : 用linux语言设计程序来判断, 符合就输出yes, 不符合就输出no。
|
|
|
n*********1 发帖数: 111 | 11 两个括号是英文输入法的括号,只有xxx-xxx-xxxx和(xxx)xxx-xxxx这两种格式才符合。
【在 c*****m 的大作中提到】 : : 你这个两个括号(123)是中文全角的括号。你确定这样的符合电话号码要求?句号 : 123.456.7890符合么? : 你自己要先有明确的定义,怎样的符合,怎样的不符合,才能考虑编程问题。
|
L*********s 发帖数: 3063 | 12 perl regular expressions |
c*****m 发帖数: 1160 | 13
合。
还有没有更多的要求?比如说,000-000-0000算不算一个正确的电话号码?要不要把前
面三位跟现有的区号来匹配?
【在 n*********1 的大作中提到】 : 两个括号是英文输入法的括号,只有xxx-xxx-xxxx和(xxx)xxx-xxxx这两种格式才符合。
|
n*********1 发帖数: 111 | 14 不用,就这些要求现在。
请问要怎么编写?
【在 c*****m 的大作中提到】 : : 合。 : 还有没有更多的要求?比如说,000-000-0000算不算一个正确的电话号码?要不要把前 : 面三位跟现有的区号来匹配?
|
l****g 发帖数: 249 | 15 你就抬杠吧。我只不过给个思路而已。
不过说回来,我看楼主都没有弄清楚怎么回事。什么叫linux语言设计程序啊?
【在 p****u 的大作中提到】 : $ str=`echo "%%%-%%%-%%%%"|sed "s/[0-9]/%/g"` : $ if [ $str != "%%%-%%%-%%%%" ]; then echo "NOT PHONE NUMBER"; fi : $
|
l*********o 发帖数: 3091 | 16 文科生就别编程序了,蛋疼。
码。
【在 n*********1 的大作中提到】 : 例如, 617-123-5555符合电话号码,而abc-456-1234和617--1235555不符合电话号码。 : 请问要怎么写程序?
|
L*1 发帖数: 11537 | 17 # Perl function to validate a phone number
sub validatePhoneNumber($)
{
my ($str) = @_;
# filter out all space chars: this is a quick and dirty one,
# will not work if it is like this: a3b2v4455-9900
$str =~ s/\D//g;
# filter out leading 1
$str =~ s/^1//;
return (length $str == 10)? 1 : 0;
} |
c*****m 发帖数: 1160 | 18
你fail了。这个程序会把617--1235555当作正确的电话号码。
【在 L*1 的大作中提到】 : # Perl function to validate a phone number : sub validatePhoneNumber($) : { : my ($str) = @_; : # filter out all space chars: this is a quick and dirty one, : # will not work if it is like this: a3b2v4455-9900 : $str =~ s/\D//g; : # filter out leading 1 : $str =~ s/^1//; : return (length $str == 10)? 1 : 0;
|
L*1 发帖数: 11537 | 19 Yes, you are absolutely right.
But I told you that it would fail in the comment.
【在 c*****m 的大作中提到】 : : 你fail了。这个程序会把617--1235555当作正确的电话号码。
|