如何恢复银行卡信用卡转账到银行卡字条上的字迹

当前位置: >
> python怎么实现字符串和数字的转换
python怎么实现字符串和数字的转换
huangwenjun & at
python如何实现字符串和数字的转换从文件读取出字符串 要把一部分实现++,举例:AT005CC56,要把AT后面的数字++,改成006,再写回去要把字符串转换成数字,再转回去,求教大侠如何实现,多谢
对字符串执行eval可以获得对应的数值,比如eval(&134&)得到134,对数字执行str可以获得对应的字符串不过eval不是很安全,比如你的字符串是从用户来的,用户可能会给你一个删除文件的字符串,建议使用pickle
huangwood & &
& & (1)(0)引用嗯,是有因数字相同换错的情形,而且replace/sub本身会再次查找,效率应该会差点,可以先记录匹配位置,最后再一次性替换。譬如,我想递增AB后面数字,可如下:  Python code  import re
text = 'A100R200C555B555'
robj = re.compile(r'( &=[AB])\d+')
found = []
end = len(text)
while beg & end:
mobj = robj.search(text, beg)
if not mobj:
beg = mobj.end()
found.append((mobj.start(), mobj.end()))
rep = text
for beg, end in found:
num = str(int(text[beg:end])+1).zfill(end-beg)
rep = rep[:beg] + num + rep[end:]
print found
huangxd2059 & &
& & (0)(0)引用探讨各位,我的字符串是这样的 A100R200C555B555,几个前后几个字母后面的数字有可能相同的,但只要改B后面的。 如果用replace 或者sub ,会将C后面的也替换掉。
huangx & &
& & (0)(0)引用好像str.replace()默认替换所有吧...
mylanlan & &
& & (0)(0)引用探讨各位,我的字符串是这样的 A100R200C555B555,几个前后几个字母后面的数字有可能相同的,但只要改B后面的。如果用replace 或者sub ,会将C后面的也替换掉。mylame1 & &
& & (0)(0)引用这样是否满足?!  Python code  &&& STR
'AT005CC56'
&&& m = re.findall('[0-9]+',STR)
&&& m[0]=(int(m[0])+1).__str__().rjust(3, '0')
&&& s = re.sub(re.findall('[0-9]+',STR)[0], m[0], STR)
'AT006CC56'
HUANGWUCHENG & &
& & (0)(0)引用用正则吧:  Python code  import re
a = 'AT005CC56'
reg = re.compile(r'AT(\d+ )[^\d]+ \d*')
match = reg.search(a)
if match is not None:
num = match.groups()[0]
format = 'AT%' + '0%dd' % len(num)
a = reg.sub(format % (int(num)+1), a)
huangwuxingfeng & &
& & (0)(0)引用import restram='abc12def000007bcdAB005ABC62b'& fi=re.findall(r'[0-9]+',stram)for eachNum in fi:
format = '%' + '0%dd' % len(eachNum)
stram=stram.replace(eachNum,format %(int(eachNum)+1))print stram
huangwu_520 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-c/字符串,字符转数字,数字转字符(转)
在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串。字符串是以“\0”作为结束符。C/C++提供了丰富的字符串处理函数,下面列出了几个最常用的函数。
字符串输出函数puts。
字符串输出函数gets。
字符串连接函数strcat。
字符串复制函数strcpy。
测字符串长度函数strlen。
字符串是面试的重点考查部分的相关知识,通过考查字符串的相关知识可以考察程序员的编程规范以及编程习惯。并且其中包括了许多知识点,例如内存越界、指针与数组操作等。许多公司在面试时会要求应聘者写一段复制字符串或字符串子串操作的程序。本章列举了一些与字符串相关的面试题,有些题目要求较高的编程技巧。
6.1& 数字与字符串的转化
应聘时经常出现数字与字符串之间转化的问题,面试官通过这类题目来考察应聘者能力,例如是否熟悉常用的库函数,是否了解ASCII码以及是否了解字符串的存储格式等。
6.1.1& 数字转化为字符串
面试例题1:使用库函数将数字转换为字符串。
考点:C库函数中数字转换为字符串的使用。
出现频率:★★★
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
itoa():将整型值转换为字符串。
ltoa():将长整型值转换为字符串。
ultoa():将无符号长整型值转换为字符串。
gcvt():将浮点型数转换为字符串,取四舍五入。
ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
fcvt():指定位数为转换精度,其余同ecvt()。
还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢。下列程序演示了如何使用itoa()函数和gcvt()函数:
1&&& # include
2&&& # include
&stdlib.h&
4&&& int main
num_int = 435;
&&&&double
num_double = 435.10f;
str_int[30];
str_double[30];
&&&&itoa(num_int,
str_int, 10);& //把整数num_int转成字符串str_int
&&&&gcvt(num_double,
8, str_double);&
//把浮点数num_double转成字符串str_double
&&&&printf("str_int:
%s\n", str_int);
&&&&printf("str_double:
%s\n", str_double);
&&&&return
程序输出结果:
1&&& str_int:
2&&& str_double:
代码第11行中的参数10表示按十进制类型进行转换,转换后的结果是“435”,如果按二进制类型进行转换,则结果为“”。
代码第12行中的参数8表示精确位数,这里得到的结果是“435.10001”。
可以使用atoi系列函数把数字转换成字符串。
面试例题2:不使用库函数将整数转换为字符串。
考点:数字转换为字符串,理解相关ASCII码。
出现频率:★★★★
如果不使用atoi或sprintf等库函数,可以通过把整数的各位上的数字加“0”转换成char类型并存到字符数组中。但是要注意,需要采用字符串逆序的方法。如以下程序所示:
1&&& #include
&iostream&
2&&& using
int2str(int n, char *str)
buf[10] = "";
temp = n & 0 ? -n:& //
temp为n的绝对值
(str == NULL)
&&&&while(temp)
&&&&&&&&buf[i++]
= (temp % 10) + '0';& //把temp的每一位上的数存入buf
&&&&&&&&temp
= temp / 10;
= n & 0 ? ++i:&
//如果n是负数,则多需要一位来存储负号
&&&&str[i]
0;&&&&&&&&&&&
//末尾是结束符0
&&&&while(1)
&&&&&&&&i--;
&&&&&&&&if
(buf[len-i-1] ==0)
&&&&&&&&&&&&
&&&&&&&&str[i]
= buf[len-i-1];& //把buf数组里的字符拷到字符串
&&&&&&&&str[i]
'-';&&&&&&&&&
//如果是负数,添加一个负号
int main()
&& "Please input an integer:";
&& "output: " ;
&&&&int2str(nNum,
p);&&&&&&&
//整型转换成字符串
&&&&cout&&
&&&&return
程序中的int2str函数完成了int类型到字符串类型的转换。在代码第46行对int2str函数做了测试。程序的执行结果如下所示:
Please input an integer: 1234
Output: 1234
如果输入的是个负数,程序执行结果如下所示:
Please input an integer: -1234
Output: -1234
接下来对int2str函数的实现进行分析。
代码第9行,把参数n的绝对值赋给temp,以后在计算各个位的整数时用temp,这样保证在负数情况下取余不会出现问题。
代码第11~第14行判断str的有效性,str不为NULL。
代码第15~第19行的while循环中,将n的各个位存放到局部数组buf中,存放的顺序与整数顺序相反。例如n为整数123&456,while循环结束后buf应为“654&321”。
代码第21行计算转换后字符串的长度len,如果是负数,长度应该再加1。
代码第22~第31行把数组buf中的非0元素逆向复制到参数str指向的内存中,如果n是负数,则str指向的第一个内存存放负号。
6.1.2& 字符串转化为数字
面试例题3:使用库函数将字符串转换为数字。
考点:C库函数中字符串转换为数字的使用。
出现频率:★★★★
与上节数字转换为字符串类似,C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。以下列举了各函数的方法及其说明。
atof():将字符串转换为双精度浮点型值。
atoi():将字符串转换为整型值。
atol():将字符串转换为长整型值。
strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
以下程序演示如何使用atoi ()函数和atof ()函数。
1&&& # include
2&&& # include
&stdlib.h&
4&&& int main
&&&&double
str_int[30] =
"435";&&&&&&&&
//将要被转换为整型的字符串
str_double[30] = "436.55";& //将要被转换为浮点型的字符串
&&&&num_int
atoi(str_int);&&&&&&&&&
//转换为整型值
&&&&num_double
= atof(str_double);& //转换为浮点型值
&&&&printf("num_int:
%d\n", num_int);
&&&&printf("num_double:
%lf\n", num_double);
&&&&return
输出结果:
num_int: 435
num_double: 436.550000
面试例题4:不使用库函数将字符串转换为数字。
考点:字符串转换为数字时,对相关ASCII码的理解。
出现频率:★★★★
程序代码如下:
1&&& #include
&iostream&
2&&& using
str2int(const char *str)
char *ptr =& //ptr保存str字符串开头
(*str == '-' || *str == '+')& //如果第一个字符是正负号,
&&&&{&&&&&&&&&&&&&&&&&&&&&
//则移到下一个字符
&&&&&&&&str++;
&&&&while(*str
&&&&&&&&if
((*str & '0') || (*str &
'9'))& //如果当前字符不是数字
&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&
//则退出循环
&&&&&&&&&&&&
&&&&&&&&temp
= temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
&&&&&&&&str++;&&&&&
//移到下一个字符
//如果字符串是以“-”开头,则转换成其相反数
&&&&&&&&temp
&&&&return
int main()
p[10] = "";
&&&&cin.getline(p,
20);&& //从终端获取一个字符串
str2int(p);&&&&&
//把字符串转换成整型数
&&&&return
程序执行结果:
输入:1234
输出:1234
输入:-1234
输出:-1234
输入:+1234
输出:1234
程序中的str2int函数作用是将字符串转换成整数。这个函数的转换过程与例题2中的int2str函数相比更加简单,它只需要做一次while循环(代码第13行)就能把数值大小计算出来,如果结果是负数,就加一个负号。
一.将CString转为CTime的几种方法
CString & timestr
& = & "日";
& int & a,b,c &
sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c);
time(a,b,c,0,0,0);&&&&
--------or - ---------------------
&CString & s("
& 19:06:23"); &
& int & nYear, &
nMonth, & nDate, & nHour,
& nMin, & nS
& sscanf(s, & "%d-%d-%d
& %d:%d:%d", &
&nYear, & &nMonth,
& &nDate, &
&nHour, & &nMin,
& &nSec); &
& CTime & t(nYear,
& nMonth, & nDate,
& nHour, & nMin,
---- or ------------------------
CString & timestr & =
& int & year,month,
& BYTE & tt[5];
& //get & year
& memset(tt, & 0,
& sizeof(tt)); &
& tt[0] & = &
timestr[0]; &
& tt[1] & = &
timestr[1]; &
& tt[2] & = &
timestr[2]; &
& tt[3] & = &
timestr[3]; &
& year= & atoi((char
& *)tt); &
& //get & month
& memset(tt, & 0,
& sizeof(tt)); &
& tt[0] & = &
timestr[6]; &
& tt[1] & = &
timestr[7]; &
& month & = &
atoi((char & *)tt); &
& //get & day
& memset(tt, & 0,
& sizeof(tt)); &
& tt[0] & = &
timestr[10]; &
& tt[1] & = &
timestr[11]; &
time(year,month,day,0,0,0);
从上面来看,很明显使用sscanf()函数的优势.
二.将CTIme转换为CString的方法:
CTime& tmSCan =
CTime::GetCurrentTime();
CString szTime = tmScan.Format("'%Y-%m-%d
%H:%M:%S'");
这样得到的日期时间字符串就是以"
23:30:59"的格式.这是不是很方便呢?
&//取得CTime中的日期
&CString cstrDate =
tmScan.Format("%Y-%m-%d");
&//取得CTime中的时间
&CString cstrTime =
tmScan.Format("%H:%M-%S");
sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:
&更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》
time_t t = time(0);
//产生"YYYY-MM-DD
hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S",
localtime(&t));
sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。
三,字符串转换为数值类型
将字符串"20.0E6"转换为数字
1,sscanf("20.0e5","%d",&x);
2,atof("20.0E6");
许多人用atoi(), atof() 和这个“家族”中的其它函数. 它们方便应用,但是有一个重要的缺点:
在转换失败和转换字符串"0"时都返回0, 这样使得一致性错误检查变得几乎不可能。 为了完整性我们给出了小段代码:
--------------------------------------------------------------------------------
&& const char* str_int =
&& const char* str_float =
&& int i = atoi(str_int);
&& float f =
atof(str_float);
--------------------------------------------------------------------------------
一个更好的办法:
更有一点复杂, 更遗一致的办法是利用sscanf()
--------------------------------------------------------------------------------
&& const char* str_int =
&& const char* str_float =
&& if(EOF == sscanf(str_int,
"%d", &i)){
&& if(EOF == sscanf(str_float,
"%f", &f)){
--------------------------------------------------------------------------------
Since sscanf() takes a const char* parameter, you can directly
use a CString with it:
因为sscanf()用const char* 作为参数, 所以你可以直接用CString作参数:
--------------------------------------------------------------------------------
&& CString str_int("777");
&& if(EOF == sscanf(str_int,
"%d", &i)){
--------------------------------------------------------------------------------
小心格式描述符(如本例中的"%d")。
sscanf()没有办法检查格式描述符与传递变量的类型匹配与否。如果不匹配你将得到不可预期的结果。
同样注意sscanf()可以一次从字符串中提取一个或多个数值。 详细信息请查阅MSDN。
如下的例子展示了利用标准C++类的来完成这个任务的模板函数
--------------------------------------------------------------------------------
#include &string&
#include &sstream&
#include &iostream&
template &class T&
bool from_string(T &t,
&&&&&&&&&&&&&&&&
const std::string &s,
&&&&&&&&&&&&&&&&
std::ios_base &
(*f)(std::ios_base&))
&& std::istringstream
!(iss&&f&&t).fail();
int main()
from_string()的第三个参数应为如下中的一个
&& // one of std::hex, std::dec 或
if(from_string&int&(i,
std::string("ff"), std::hex)){
std::cout&&i&&std::
std::cout&&"from_string
failed"&&std::
if(from_string&float&(f,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
std::string("123.456"),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
std::dec))
std::cout&&f&&std::
std::cout&&"from_string
failed"&&std::
&& return 0;
四,&int char * float and
CString&Covernt
&-&CString
1) int -&CString
int n = 1;
str.Format("%d",n);
2) CString-&int
CString str = "1";
int n = atoi(str.GetBuffer(0));
2. char* 与CString
1)char*-&CString
char sz[128];
str.Format("%s",sz);
2) CString -& char*
//int nLength = str.GetLength();
char* sz = str.GetBuffer(0);
float&-&CString
1)float-&CString
float f = 0.0;
str.Format("%f",f);
2) CString-&float
CString str = "0.0";
float f = atof(str.GetBuffer(0));
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。怎样转换字符串为布尔型
[问题点数:20分,结帖人kll]
怎样转换字符串为布尔型
[问题点数:20分,结帖人kll]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2009年2月 .NET技术大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第一2009年 总版技术专家分年内排行榜第一
2011年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第一2009年 总版技术专家分年内排行榜第一
2011年 总版技术专家分年内排行榜第二
本帖子已过去太久远了,不再提供回复功能。java如何将特殊字符转义_百度知道
java如何将特殊字符转义
java开发中,我想对它进行转义,有哪个方法可以实现,如果遇到特殊字符
提问者采纳
;)?;+。{ }
标记限定符表达式的开始; 匹配换行符。要匹配 、或向后引用。*
匹配前面的子表达式零次或多次.
匹配除换行符 &#92:$
匹配输入字符串的结尾位置,而 ‘&#92在要转义的特殊字符前加上反斜杠
\&#92,请使用 &#92,除非在方括号表达式中使用;r&#39。( )
标记一个子表达式的开始和结束位置? 字符。要匹配 |。&#39。要匹配 + 字符!; 则匹配 “(”。;”。^
匹配输入字符串的开始位置。|
指明两项之间的一个选择,请使用 &#92。[ ]
标记一个中括号表达式的开始。要匹配 ,此时它表示不接受该字符集合,请使用 &#92?
匹配前面的子表达式零次或一次。\( 和 &#92、或原义字符; 匹配字符 ‘n&#39。要匹配 * 字符。例如,请使用 \n表示\[;{。;|。要匹配 [,请使用 \n之外的任何单字符。要匹配 {;n&#39,请使用 \&#92!
如果是正则表达式中
请看如下例子;; 匹配 “\$;,请使用 &#92、或八进制转义符, ‘n&#39。子表达式可以获取供以后使用。要匹配这些字符;^。序列 ‘&#92,请使用 \&#92。要匹配 $ 字符本身。+
匹配前面的子表达式一次或多次。要匹配 ^ 字符本身,请使用 \(&#39,则 $ 也匹配 ‘&#92,或指明一个非贪婪限定符;*;
将下一个字符标记为或特殊字符;n'' 或 ‘\,请使用 &#92.;n
不知道你要转义什么字符。如果设置了 RegExp 对象的 Multiline 属性
提问者评价
其他类似问题
按默认排序
其他1条回答
则在他们前面加
\后紧跟你要转义的字符
不能有空格 不能有标点
否则转义的是 空格
标点 某些具有特殊含义的像 \
但是要注意 这个东西每次只能转义一个
字符格式为
&#92无论你要转义什么
特殊字符的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁404 - 找不到文件或目录。
404 - 找不到文件或目录。
您要查找的资源可能已被删除,已更改名称或者暂时不可用。}

我要回帖

更多关于 银行卡转账 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信