• 关于 字符串转大写 的搜索结果

问题

字符串小写转大写

珍宝珠 2020-02-12 16:45:25 0 浏览量 回答数 1

回答

indexOf():返回指定字符的索引。charAt():返回指定索引处的字符。replace():字符串替换。trim():去除字符串两端空白。split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型数组。length():返回字符串长度。toLowerCase():将字符串转成小写字母。toUpperCase():将字符串转成大写字符。substring():截取字符串。equals():字符串比较。

剑曼红尘 2020-03-27 16:25:16 0 浏览量 回答数 0

回答

使用了 String toUpperCase() 方法将字符串从小写转为大写: public class StringToUpperCaseEmp { public static void main(String[] args) { String str = "string runoob"; String strUpper = str.toUpperCase(); System.out.println("原始字符串: " + str); System.out.println("转换为大写: " + strUpper); } } 以上代码实例输出结果为: 原始字符串: string runoob 转换为大写: STRING RUNOOB

珍宝珠 2020-02-12 16:45:48 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

字符串的操作 字符串的连接操作 符号: +格式:str1 + str2例如:str1 = 'I Love' str2 = 'You!' print(str1 + str2) >>> 'I Love You!' 返回值:str字符串的复制操作 符号: *格式:str * num例如:str = 'abc' num = 3 print(str1 * num) >>> 'abcabcabc' 返回值:str字符串的索引操作 符号: []格式:str[index]例如:str = 'abcde' print(str[2]) >>> 'c' 返回值:str字符串的切片操作 符号: [::]格式:str[index:index:step]例如:str = 'abcdefg' print(str[:]) >>> 'abcdefg' #取字符串所有内容,开头的0可以忽略 print(str[:3]) >>> 'abc' #取出字符串索引0-3的内容(顾头不顾尾,不包含索引3的对象) print(str[:5:2]) >>> 'ace' #取出字符串索引0-5的内容,每2个索引取一次 print(str[3:]) >>> 'defg' #取出字符串索引3开始到结尾的内容 print(str[-2:]) >>> 'fg' #取出字符串倒数第2开始到结尾的内容 返回值:str 内置方法 连接 格式:x.__add__(y)等同于x+y返回值:str 包含 格式:x.__contains__(y)返回值:bool相等 格式:x.__eq__(y)等同于x==y返回值:bool大于等于 格式:x.__ge__(y)等同于x>=y返回值:bool访问属性方法(文件操作时用) 格式:x.__getattribute__(self,name)返回值:tuple获取键值对(字典操作时用) 格式:x.__getitem__(key)返回值:键的值 大于 格式:x.__gt__(y)等同于x>y返回值:bool哈希值 格式:x.__hash__()返回值:哈希值,int类型迭代器 格式:x.__iter__()返回值:迭代器小于等于 格式:x.__le__(y)等同于x<=y返回值:bool长度 格式:x.__len__()等同于len(x)返回值:int类型小于 格式:x.__lt__()返回值:布尔类型复制 格式:x.__mul__(y)等同于x*y返回值:str注::此处的y必须是int类型 不等于 格式:x.__ne__(y)等同于x!=y返回值:bool右->左 复制 格式:x.__rmul__(y)等同于y*x返回值:str注:此处的y必须是int类型 常用方法 首字母大写,后面的小写 格式:x.capitalize() #开头第一个单词首字母大写,后面的所有字符串全部小写 例如:x = = 'i am A 好 boy' print(x.capitalize()) >>> 'I am a 好 boy' 返回值:str全部字符小写 格式:x.casefold() #字符串中所有单词的所有字母全部小写 例如:x = = 'i am A 好 boy' print(x.casefold()) >>> 'i am a 好 boy' 返回值:str居中,两边默认以空格填充 格式:x.center() #定义字符串的长度,不足长度时,两边以指定字符串进行填充 例如:x = 'abc' print(x.center(20,'*')) >>> '********abc*********' 返回值:str计数(默认全文计数) 格式:x.count(str,index1,index2) #指定开始和结束范围来统计某字符串的个数 例如:x = 'sffefwsf' print(x.count('sf'),0,8) >>> 2 返回值:int类型编码 格式:x.encode() #指定字符串的编码格式 例如:x.encode(encoding='utf-8')#转换为utf-8格式返回值:bytes以什么为结尾 格式:x.endswith(str,index1,index2) #指定字符串的开始和结束范围,判断所选区域是否是以指定字符串结尾 例如:x = 'adfd' print(x.endswith('fd',2,3)) >>> True 返回值:bool把t转换为空格 格式:x.expandtabs() #默认开头到\t为8个字节,不足以空格填充 例如:x = 'i amt At 好 boy' print(x.expandtabs()) >>> 'i am A 好 boy' 返回值:str查找 格式:x.find(str,index1,index2) #指定开始和结束的范围,查找指定区域内是否由指定的字符串(只返回查找到第一个的索引值) 例如:x = 'asdfdsfsafsaf' print(x.find('df',1,8)) >>> 2 返回值:int类型注:如果find未查找到,将返回为-1 格式化 格式:x.format(*args) #字符串的格式化可以有参数,可以无参数,可以是索引值参数,也可以是关键字参数 无参数 例如:s1 = 'I {} {} {}' print(s1.format('love','you','!')) >>> 'I love you !' 索引参数 例如:s1 = 'I {0} {1} {0} {1}' print(s1.format('love','you')) >>> 'I love you love you' 注:使用索引参数时,只能按顺序,从索引0开始 关键字参数 例如:s1 = 'I {m} {n}' print(s1.format(m = 'love',n = 'you')) >>> 'I love you' 格式限定符 填充常和对齐一起使用: ^ < > 分别是居中,左对齐和右对齐,后面带宽度 : 后面带填充的字符,只能是一个字符,默认是空格 例如: 无(位置)参数:s1 = 'I love you {}' print(s1.format(', very much !')) 'I love you , very much !' 默认居中方法:s1 = 'I love you {:^18}' print(s1.format(', very much !')) 'I love you , very much ! ' 指定字符居中:s1 = 'I love you {:*^18}' print(s1.format(', very much !')) 'I love you , very much !*' 指定字符左对齐:s1 = 'I love you {:*<18}' print(s1.format(', very much !')) 'I love you , very much !*' 指定字符右对齐:s1 = 'I love you {:*>18}' print(s1.format(', very much !')) 'I love you *, very much !' 精度与类型f 例如:s1 = '圆周率大概是{}' print(s1.format(3.1415926)) >>> '圆周率大概是3.1415926' s1 = '圆周率大概是{:.2f}'print(s1.format(3.1415926)) >>> '圆周率大概是3.14' s1 = '圆周率大概是{:.2f}'print(s1.format(3.1415926)) >>> '圆周率大概是3.1416' 注:精度一般和浮点一起使用,取值时使用四舍五入法 进制操作 主要的进制为b、d、o、x,分别是二、十、八、十六进制 例如: 十进制:s1 = 'The pen values {} yuan!'s1 = 'The pen values {:d} yuan!'print(s1.format(17)) >>> 'The pen values 17 yuan!' 二进制:s1 = 'The pen values {:b} yuan!'print(s1.format(17)) >>> 'The pen values 10001 yuan!' 八进制:s1 = 'The pen values {:o} yuan!'print(s1.format(17)) >>> 'The pen values 21 yuan!' 十六进:s1 = 'The pen values {:x} yuan!'print(s1.format(17)) >>> 'The pen values 11 yuan!' 金融字符,千分位 即, 例如:s1 = 'The phone is {}$ !' print(s1.format(10000000)) >>> 'The phone is 10000000$ !' s1 = 'The phone is {:,}$ !'print(s1.format(10000000)) >>> 'The phone is 10,000,000$ !' 返回值:str 查找 格式:x.index(str,index1,index2) #用法和find一样 返回值:int注::当index未查找到,程序将报错 非符号字符串 格式:x.isalnum() #字符串中可以有大小写,可以有数字,但不可以有符号 返回值:bool纯字母的字符串 格式:x.isalpha() #字符串中可以有大小写,但不可以有数字和符号 返回值:bool纯数字的字符串 格式:x.isdecimal() #字符串中只可以数字 返回值:bool纯数字的字符串 格式:x.isdigit() #字符串中只可以数字 返回值:bool开头字母的字符串 格式:x.isidentifier() #字符串以字母开头,可以是大小写,后面可以有数字,但数字不能开头 返回值:bool全部小写 格式:x.islower() #字符串全部是小写,也可以有数字,数字可以开头,但不能全数字 返回值:bool包含中文数字 格式:x.isnumeric() #字符串中可以有数字,也可以有中文大小写数字 返回值:bool可打印 格式:x.isprintable() #打印为空,则为假 返回值:bool空格 格式:x.isspace() #字符串中只能是空格 返回值:bool标题 格式:x.istitle() #字符串中每个单词首字母大写 返回值:bool全部大写 格式:x.isupper() #字符串中可以有数字,数字可以开头,但必须有大写字母 返回值:bool拼接 格式:x.join(str) #把字符串以指定字符串进行相连 例如:x = 'abcde' print('_'.join(x)) >>> 'a_b_c_d_e' 返回值:str左对齐 格式:x.ljust(str) #字符串左对齐,需要指定长度,不足长度时可以用指定字符串进行填充(默认以空格填充),当指定长度小于字符串长度,将会左对齐 例如:x = 'abcde' print(x.ljust(12,'*')) >>> 'abcde*******' 返回值:str全部小写 格式:x.lower() #字符串中所有单词,所有字母全部小写 #与casefold()功能一样 返回值:str去除左边空格 格式:x.lstrip() #去除对字符串左边的指定字符串,字符串中间和结尾的指定字符串不做处理,默认去除的是空格 例如:x = 'aaafdfdfaaadfdsaaa' print(x.lstrip('a')) >>> 'fdfdfaaadfdsaaa' 返回值:str字符串进行分段 格式:x.partition(str) #把字符串以从左到右第一个指定字符串为元素进行分段,以元组形式展现 例如:x = 'acbadfsadfsdfsd' print(x.partition('sa')) >>> ('acbadf', 'sa', 'dfsdfsd') 返回值:tuple字符串替换 格式:x.replace(old,new,count) #把字符串中指定的字符串替换为新字符串,默认全部替换,也可以指定替换次数,如果次数超过存在的个数,将全部替换 例如:x = 'acbadfsadfsdfsd' print(x.replace('df','A',7)) >>> 'acbaAsaAsAsd' 返回值:str右→左 查找 格式:x.rfind(str,index1,index2) #功能同find()一样 返回值:int右→左 查找 格式:x.rindex(str,index1,index2) #功能同index()一样 返回值:int右对齐 格式:x.rjust(str) #字符串右对齐,需要指定长度,不足长度时可以用指定字符串进行填充(默认以空格填充),当指定长度小于字符串长度,将会右对齐 例如:x = 'adc' print(x.rjust(6,'%')) >>> '%%%adc' 返回值:str右→左 字符串分段 格式:x.rpartition(str) #把字符串以从右到左第一个指定字符串进行分段,以元组形式展示 例如:x = 'abccbacbd' print(x.rpartition('cb')) >>> ('abccba', 'cb', 'd') 返回值:tuple字符串切片 格式:x.rsplit(str) #把字符串以指定字符串进行切片,并以列表的形式展现 例如:x = 'abccbacbd' print(x.rsplit('cb')) >>> ['abc', 'a', 'd'] 返回值:list去除右边空格 格式:x.rstrip(str) #去除字符串最右边的指定字符串,左边和中间的指定字符串不做处理,默认去除的是空格 例如:x = 'aaafdfdfaaadfdsaaa' print(x.rstrip('a')) >>> 'aaafdfdfaaadfds' 返回值:str切片 格式:x.split() #把字符串以指定字符串进行切片,并以列表的形式展现 #功能同rsplit()一样 返回值:list换行符分段 格式:x.splitlines() #把字符串以换行符进行切片,并以列表的形式展现 返回值:list以什么为开头 格式:x.startswith(str,index1,index2) #指定字符串的开始和结束范围,判断指定区域是否是以指定字符串开头 例如:x = 'adafsdaf' print(x.startswith('da',1,8)) >>> True 返回值:bool去除两边空格 格式:x.strip(str) #去除字符串两边的指定字符串,中间的指定字符串不做处理,默认去除的是空格 例如:x = 'aaadfsaaafdsfaaa' print(x.strip()) >>> 'dfsaaafdsf' 返回值:str大小写互转 格式:x.swapcase() #字符串中所有的字母进行大小写相互转换 例如:x = 'aBcdE' print(x.swapcase()) >>> 'AbCDe' 返回值:str标题化 格式:x.title() #对字符串中所有单词首字母大写,单词中间的大写全部转换为小写 例如:x = 'asd faDSdsf sdf' print(x.title()) >>> 'Asd Fadsdsf Sdf' 返回值:str全部变大写 格式:x.upper() #字符串中所有字母全部转换为大写 例如:x = 'DFdgDdfdg' print(x.upper()) >>> 'DFDGDDFDG' 返回值:str左对齐,零填充 格式:x.zfill() #字符串左对齐,指定字符串长度,不足部分以0填充 例如:x = 'afd' print(x.zfill(5)) >>> '00afd' 返回值:str映射函数 x.maketrans(*args) #把两个字符串进行一一对应,两个字符串长度必须一致 格式:str.maketrans(str1,str2) bytearray.maketrans(str1,str2) bytes.maketrans(str1,str2) 返回值:dict映射函数 x.translate(*args) #把maketrans()得到的映射表应用出来 格式:x.translate(str.maketrans(str1,str2))返回值:str

xuning715 2019-12-02 01:10:18 0 浏览量 回答数 0

回答

charAt(index):返回指定索引处的字符串 charCodeAt(index):返回指定索引处的字符的 Unicode 的值 concat(str1,str2,...):连接多个字符串,返回连接后的字符串的副本 fromCharCode():将 Unicode 值转换成实际的字符串 indexOf(str):返回 str 在父串中第一次出现的位置,若没有则返回-1 lastIndexOf(str):返回 str 在父串中最后一次出现的位置,若没有则返回-1 match(regex):搜索字符串,并返回正则表达式的所有匹配 replace(str1,str2):str1 也可以为正则表达式,用 str2 替换 str1 search(regex):基于正则表达式搜索字符串,并返回第一个匹配的位置 slice(start,end):返回字符索引在 start 和 end(不含)之间的子串 split(sep,limit):将字符串分割为字符数组,limit 为从头开始执行分割的最大数量 substr(start,length):从字符索引 start 的位置开始,返回长度为 length 的子串 substring(from,to):返回字符索引在 from 和 to(不含)之间的子串 toLowerCase():将字符串转换为小写 toUpperCase():将字符串转换为大写 valueOf():返回原始字符串值

茶什i 2019-12-02 03:20:05 0 浏览量 回答数 0

回答

1、substring(start,end)从一个字符串中截取子串start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。例子:${‘str’?substring(0)}à结果为str${‘str’?substring(1)}à结果为tr${‘str’?substring(2)}à结果为r${‘str’?substring(3)}à结果为${‘str’?substring(0,0)}à结果为${‘str’?substring(0,1)}à结果为s${‘str’?substring(0,2)}à结果为st${‘str’?substring(0,3)}à结果为str 2、cap_first 将字符串中的第一个单词的首字母变为大写。${‘str’?cap_first}à结果为Str3、uncap_first将字符串中的第一个单词的首字母变为小写。${‘Str’?cap_first}à结果为str4、 capitalize将字符串中的所有单词的首字母变为大写${‘str’? capitalize}à结果为STR 5、 date,time,datetime将字符串转换为日期例如:<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)><#assign date2=”9:28:20”?time(“HH:mm:ss”)><#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>${date1}à结果为2009-10-12${date2}à结果为9:28:20${date3}à结果为2009-10-12 9:28:20注意:如果指定的字符串格式不正确将引发错误。

蛮大人123 2019-12-02 02:19:57 0 浏览量 回答数 0

问题

从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存

珍宝珠 2019-12-01 22:01:07 33 浏览量 回答数 1

问题

JSTL字符串处理函数? 400 报错

爱吃鱼的程序员 2020-06-03 15:12:18 0 浏览量 回答数 1

问题

字符串的字母大小写转换问题

蛮大人123 2019-12-01 19:55:11 901 浏览量 回答数 1

回答

一、字符串的创建 test = str() / ""test = str("licheng") / "licheng"无参数,创建空字符串一个参数,创建普通字符串两个参数,int(字节,编码)二、字符串的常用方法 复制代码 capitalize():字符串首字符大写 string = 'this is a string.'new_str = string.capitalize()print(new_str) 输出:This is a string. center(width, fillchar=None):将字符串放在中间,在指定长度下,首尾以指定字符填充 string = 'this is a string.'new_str = string.center(30,'*')print(new_str) 输出:this is a string.* count(sub, start=None, end=None):计算字符串中某字符的数量 string = 'this is a string.'new_str = string.count('i')print(new_str) 输出:3 decode/encode(encoding=None, errors=None):解码/解码 string = 'this is a string.'new_str = string.decode()new_str = string.encode()print(new_str) endswith(self, suffix, start=None, end=None):判断是否以某字符结尾 string = 'this is a string.'new_str = string.endswith('ing.')print(new_str) 输出:True find(self, sub, start=None, end=None):在字符串中寻找指定字符的位置 string = 'this is a string.'new_str = string.find('a') #找的到的情况print(new_str) 输出:8 new_str = string.find('xx') #找不到的情况返回-1print(new_str) 输出:-1 index(self, sub, start=None, end=None):;类似find string = 'this is a string.'new_str = string.index('a') #找的到的情况print(new_str) 输出:8 new_str = string.index('xx') #找不到的情况,程序报错print(new_str) 输出:程序运行报错,ValueError: substring not found isalnum(self):判断字符串中是否都是数字和字母,如果是则返回True,否则返回False string = 'My name is yue,my age is 18.'new_str = string.isalnum()print(new_str) 输出:False string = 'haha18121314lala'new_str = string.isalnum()print(new_str) 输出:True isalpha(self):判断字符串中是否都是字母,如果是则返回True,否则返回False string = 'abcdefg'new_str = string.isalpha()print(new_str) 输出:True string = 'my name is yue'new_str = string.isalpha() #字母中间带空格、特殊字符都不行print(new_str) 输出:False isdigit(self):判断字符串中是否都是数字,如果是则返回True,否则返回False string = '1234567890'new_str = string.isdigit()print(new_str) 输出:True string = 'haha123lala'new_str = string.isdigit() #中间带空格、特殊字符都不行print(new_str) 输出:False islower(self):判断字符串中的字母是否都是小写,如果是则返回True,否则返回False string = 'my name is yue,my age is 18.'new_str = string.islower()print(new_str) 输出:True string = 'My name is Yue,my age is 18.'new_str = string.islower()print(new_str) 输出:False isupper(self):检测字符串中所有的字母是否都为大写。 string = 'MY NAME IS YUE.'new_str = string.isupper()print(new_str) 输出:True string = 'My name is Yue.'new_str = string.isupper()print(new_str) 输出:False join(self, iterable):将序列中的元素以指定的字符连接生成一个新的字符串。 string = ("haha","lala","ohoh")str = "-"print(str.join(string)) 输出:haha-lala-ohoh lower(self):转换字符串中所有大写字符为小写。 string = "My Name is YUE."print(string.lower()) 输出:my name is yue. lstrip(self, chars=None):截掉字符串左边的空格或指定字符。 string = " My Name is YUE."print(string.lstrip()) 输出:My Name is YUE. string = "My Name is YUE."print(string.lstrip('My')) 输出: Name is YUE. replace(self, old, new, count=None):把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 string = "My name is yue."print(string.replace("yue","ying")) 输出:My name is ying. rfind(self, sub, start=None, end=None):返回字符串最后一次出现的位置,如果没有匹配项则返回-1。 string = "My name is yue."print(string.rfind('is')) 输出:8 string = "My name is yue."print(string.rfind('XXX')) 输出:-1 split(self, sep=None, maxsplit=None):通过指定分隔符对字符串进行切片。 string = "haha lala gege"print(string.split(' ')) 输出:['haha', 'lala', 'gege'] print(string.split(' ', 1 )) 输出: ['haha', 'lala gege'] rsplit(self, sep=None, maxsplit=None):通过指定分隔符对字符串从右进行切片。 string = "haha lala gege"print(string.rsplit(' ')) 输出:['haha', 'lala', 'gege'] print(string.rsplit(' ', 1 )) 输出: ['haha lala', 'gege'] rstrip(self, chars=None):删除 string 字符串末尾的指定字符(默认为空格). string = " My name is yue. "print(string.rstrip()) 输出: My name is yue. strip(self, chars=None):移除字符串头尾指定的字符(默认为空格)。 string = " My name is yue. "print(string.strip()) 输出:My name is yue. upper(self):将字符串中的小写字母转为大写字母。 string = "my name is yue,my age is 18."print(string.upper()) 输出:MY NAME IS YUE,MY AGE IS 18. 复制代码 str源码三、字符串的公共功能 索引(只能取一个元素)切片(取多个元素)长度(len)python2:按字节算长度python3:按字符算长度for循环(同长度的版本循环单位)四、字符与字节的转换 复制代码 将gbk编码的字符转化为字节 s = "李程"b = bytes(s, encoding="gbk")type(b) 输出为字节类型 将字节转化为字符 c = str(b, encoding="gbk")复制代码五、字符串格式化 Python的字符串格式化有两种方式: 百分号方式、format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存。 1、百分号方式 %(name)[width].[precision]typecode 参数详解常用格式化: 复制代码tpl = "i am %s" % "spark" tpl = "i am %s age %d" % ("spark", 18) tpl = "i am %(name)s age %(age)d" % {"name": "spark", "age": 18} tpl = "percent %.2f" % 99.97623 tpl = "i am %(pp).2f" % {"pp": 123.425556, } tpl = "i am %.2f %%" % {"pp": 123.425556, }复制代码2、Format方式 [[fill]align]sign0,[type] 参数详解 常用格式化: 复制代码 1 tpl = "i am {}, age {}, {}".format("seven", 18, 'alex') 2 3 tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex']) 4 5 tpl = "i am {0}, age {1}, really {0}".format("seven", 18) 6 7 tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18]) 8 9 tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)10 11 tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})12 13 tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])14 15 tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)16 17 tpl = "i am {:s}, age {:d}".format(*["seven", 18])18 19 tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)20 21 tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})22 23 tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)24 25 tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)26 27 tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)28 29 tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)

xuning715 2019-12-02 01:10:45 0 浏览量 回答数 0

问题

2.1.4.6字符串处理相关函数

福利达人 2019-12-01 21:58:34 2425 浏览量 回答数 0

问题

怎样实现十六进制转八进制和十进制?

蛮大人123 2019-12-01 19:36:07 1140 浏览量 回答数 2

回答

自己判断男女然后insert的时候大写不行吗?###### 你插入数据库之前用String类的toUpperCase()方法将字符串转换为大写字母不就得了######回复 @Scott3 : toUpperCase()这个方法是JRE的核心API,不太可能出现问题。你这种情况,我猜测是不是你建立数据库的时候设置的字符编码属性有问题。比如如果你设置成utf-8_ci的话,数据库本身就不支持区分大小写了######这个方法用了,好像没有出现理想的功能。这可如何是好?

kun坤 2020-06-07 16:54:38 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 规则引擎提供多种函数,您可以在编写SQL时使用它们,实现多样化数据处理。 使用方法 您可以在SQL语句中使用函数获取数据或者对数据做处理。 例如:下面代码中用到了deviceName(),abs(number),topic(number)三个函数。 SELECT case flag when 1 then '开灯' when 2 then '关灯' else '' end flag,deviceName(),abs(temperature) tmr FROM "/topic/#" WHERE temperature>10 and topic(2)='123' 说明 使用时请注意,通常单引号代表常量,不带引号或双引号代表变量。如select “a” a1, ‘a’ a2, a a3中,a1与a3等效,a2代表常量a。 函数名 函数说明 abs(number) 返回绝对值。 asin(number) 返回 number的反正弦。 attribute(key) 返回key所对应的设备标签。调用依赖设备,使用SQL调试时返回为空。 concat(string1, string2) 字符串连接 示例:concat(field,’a’) cos(number) 返回number的余弦。 cosh(number) 返回number的双曲余弦(hyperbolic cosine)。 crypto(field,String) 对field的值进行加密。 第二个参数String为算法字符串。可选:MD2,MD5,SHA1,SHA-256,SHA-384,SHA-512。 deviceName() 返回当前设备名称。调用依赖设备,使用SQL调试时返回为空。 endswith(input, suffix) 判断input是否以suffix结尾。 exp(number) 返回指定数字的指定次幂。 floor(number) 返回一个最接近它的整数,它的值小于或等于这个浮点数。 log(n, m) 返回自然对数。 如果不传m,则返回log(n)。 lower(string) 返回小写字符串。 mod(n, m) n%m 余数。 nanvl(value, default) 返回属性值。 若属性值为null,则返回default。 newuuid() 返回一个随机uuid字符串。 payload(textEncoding) 返回设备发布消息的payload转字符串。 字符编码默认UTF-8,即 payload()默认等价于payload(‘utf-8’)。 power(n,m) 返回n的m次幂。 rand() 返回[0~1)之间随机数。 replace(source, substring, replacement) 对某个目标列值进行替换。 示例:replace(field,’a’,’1’)。 sin(n) 返回 n的正弦。 sinh(n) 返回 n的双曲正弦(hyperbolic sine)。 tan(n) 返回 n的正切。 tanh(n) 返回n的双曲正切(hyperbolic tangent)。 timestamp(format) 返回当前系统时间。 format可选。如果为空则返回当前系统时间戳毫秒值,比如 timestamp() = 1232323233,timestamp(‘yyyy-MM-dd HH:mm:ss.SSS’)=2016-05-30 12:00:00.000。 topic(number) 返回Topic分段信息。 如,有一个Topic: /abcdef/ghi。函数 topic() 返回 “ /abcdef/ghi”, topic(1) 返回 “abcdef” , topic(2) 返回 “ghi”。 upper(string) 返回大写字符。

2019-12-01 23:11:55 0 浏览量 回答数 0

回答

Python 变量类型变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。 变量赋值Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- counter = 100 # 赋值整型变量miles = 1000.0 # 浮点型name = "John" # 字符串 print counterprint milesprint name 运行实例 »以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。执行以上程序会输出如下结果:1001000.0John多个变量赋值Python允许你同时为多个变量赋值。例如:a = b = c = 1以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。您也可以为多个对象指定多个变量。例如:a, b, c = 1, 2, "john"以上实例,两个整型对象1和2的分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。 标准数据类型在内存中存储的数据可以有多种类型。例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。Python 定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典) Python数字数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number对象就会被创建:var1 = 1var2 = 10您也可以使用del语句删除一些对象的引用。del语句的语法是:del var1[,var2[,var3[....,varN]]]]您可以通过使用del语句删除单个或多个对象的引用。例如:del vardel var_a, var_bPython支持四种不同的数字类型:int(有符号整型)long(长整型[也可以代表八进制和十六进制])float(浮点型)complex(复数)实例一些数值类型的实例:int long float complex10 51924361L 0.0 3.14j100 -0x19323L 15.20 45.j-786 0122L -21.9 9.322e-36j080 0xDEFABCECBDAECBFBAEl 32.3e+18 .876j-0490 535633629843L -90. -.6545+0J-0x260 -052318172735L -32.54e100 3e+26J0x69 -4721885298529L 70.2E-12 4.53e-7j长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 Python字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 :s="a1a2···an"(n>=0)它是编程语言中表示文本的数据类型。python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。比如:s = 'ilovepython's[1:5]的结果是love。当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p。加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- str = 'Hello World!' print str # 输出完整字符串print str[0] # 输出字符串中的第一个字符print str[2:5] # 输出字符串中第三个至第五个之间的字符串print str[2:] # 输出从第三个字符开始的字符串print str * 2 # 输出字符串两次print str + "TEST" # 输出连接的字符串以上实例输出结果:Hello World!Hllollo World!Hello World!Hello World!Hello World!TESTPython列表List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用 [ ] 标识,是 python 最通用的复合数据类型。列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]tinylist = [123, 'john'] print list # 输出完整列表print list[0] # 输出列表的第一个元素print list[1:3] # 输出第二个至第三个元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素print tinylist * 2 # 输出列表两次print list + tinylist # 打印组合的列表以上实例输出结果:['runoob', 786, 2.23, 'john', 70.2]runoob[786, 2.23][2.23, 'john', 70.2][123, 'john', 123, 'john']['runoob', 786, 2.23, 'john', 70.2, 123, 'john']Python元组元组是另一个数据类型,类似于List(列表)。元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )tinytuple = (123, 'john') print tuple # 输出完整元组print tuple[0] # 输出元组的第一个元素print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素print tinytuple * 2 # 输出元组两次print tuple + tinytuple # 打印组合的元组以上实例输出结果:('runoob', 786, 2.23, 'john', 70.2)runoob(786, 2.23)(2.23, 'john', 70.2)(123, 'john', 123, 'john')('runoob', 786, 2.23, 'john', 70.2, 123, 'john')以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]tuple[2] = 1000 # 元组中是非法应用list[2] = 1000 # 列表中是合法应用 Python 字典字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用"{ }"标识。字典由索引(key)和它对应的值value组成。实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- dict = {}dict['one'] = "This is one"dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print dict['one'] # 输出键为'one' 的值print dict[2] # 输出键为 2 的值print tinydict # 输出完整的字典print tinydict.keys() # 输出所有键print tinydict.values() # 输出所有值输出结果为:This is oneThis is two{'dept': 'sales', 'code': 6734, 'name': 'john'}['dept', 'code', 'name']['sales', 6734, 'john']Python数据类型转换有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。函数 描述int(x [,base])将x转换为一个整数long(x [,base] )将x转换为一个长整数float(x)将x转换到一个浮点数complex(real [,imag])创建一个复数str(x)将对象 x 转换为字符串repr(x)将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)将序列 s 转换为一个元组list(s)将序列 s 转换为一个列表set(s)转换为可变集合dict(d)创建一个字典。d 必须是一个序列 (key,value)元组。frozenset(s)转换为不可变集合chr(x)将一个整数转换为一个字符unichr(x)将一个整数转换为Unicode字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串

xuning715 2019-12-02 01:10:21 0 浏览量 回答数 0

问题

应该返回false的用户输入返回true

养狐狸的猫 2019-12-01 20:00:45 8 浏览量 回答数 0

回答

关于字符串比较大小写敏感主要涉及到两个方面的内容: (1) 对字段的值比较而言 假如表Test中有如下两条记录 c1 c2 1 a 2 A 同样的查询语句:select * from Test where c2 = 'a'; 在大小写不敏感的库中会查出如下的两条记录 c1 c2 1 a 2 A 而在大小写敏感的库中则只会查出如下的一条记录 C1 C2 1 a (2) 对于表名、字段名而言 在设置为大小写敏感的库中进行查询的时候,可能经常会遇到无效的表名或列名的问题, 下面针对这种情况进行说明。 (i) 如果使用DM管理工具图形界面建表的话建议表名和字段名都使用大写。因为使用图形界面建表相当于 使用语句建表的时候加了双引号的,会固定住大小写。如果写成小写,那么就是小写了,在查询的时候 也需要加双引号,否则就有可能报无效的表名或列名的问题,比较麻烦; (ii) 如果使用脚本建表的话,如果表名和字段名没有加双引号的话都会被系统自动转换成大写。 如:create table test(a int);系统会自动把表名test,字段名a转换成大写,处理方式与Oracle数据库一致。 所以针对大小写敏感的库,在使用建表脚本或者通过查询脚本进行查询的时候建议统一不要写双引号, 让系统统一自动都转化为大写; (iii) 以上两点主要针对大小写敏感的库而言,大小写不敏感的库则不存在上述问题。 总结:基于以上两点,在初始化数据库的过程中就可以对字符串比较大小写敏感这个参数做出合理的选择了。

茶什i 2019-12-02 03:18:40 0 浏览量 回答数 0

问题

URL函数是什么?

nicenelly 2019-12-01 21:26:41 1163 浏览量 回答数 0

问题

字符串函数是什么?

nicenelly 2019-12-01 21:26:22 1658 浏览量 回答数 0

问题

【精品问答】Java实战200例(附源码)

珍宝珠 2020-02-14 11:55:46 14308 浏览量 回答数 10

问题

C++进阶【问答合集】

马铭芳 2019-12-01 20:19:12 808 浏览量 回答数 1

问题

云监控中签名算法

反向一觉 2019-12-01 21:24:30 1014 浏览量 回答数 0

问题

HybridDB for MySQL中支持的MySQL函数有什么

云栖大讲堂 2019-12-01 21:27:41 1433 浏览量 回答数 0

问题

C# 如何 和php 的des 加密解密 保持一致 加密报错 

kun坤 2020-06-03 10:32:47 2 浏览量 回答数 1

回答

为保证用户日志数据的安全,日志服务 API 的所有 HTTP 请求都必须经过安全验证。 验证流程 目前,该安全验证基于阿里云的访问密钥,使用对称加密算法完成。 其验证流程如下: 请求端根据 API 请求内容(包括 HTTP Header 和 Body)生成签名字符串。 请求端使用阿里云的访问密钥对(AccessKeyID 和 AccessKeySecret),对第一步生成的签名字符串进行签名,形成该 API 请求的数字签名。 请求端把 API 请求内容和数字签名一同发送给服务端。 服务端在接到请求后会重复如上的步骤1和步骤2的工作,并在服务端计算出该请求期望的数字签名。 说明 服务端会在后台取得该请求使用的用户访问密钥对。 服务端用期望的数字签名和请求端发送过来的数字签名做比对,如果完全一致则认为该请求通过安全验证。否则直接拒绝该请求。 上面的整个流程也可以使用下图描述: 图 1. 安全验证流程 安全验证流程可以达到如下目的: 确认哪位用户在做 API 请求。 因为在发送请求前需要用户指定生成数字签名的密钥对,在服务端即可通过该密钥对确定用户身份,进而可做访问权限管理。 确认用户请求在网络传输过程中有无被篡改。 因为服务端会对接收到的请求内容重新计算数字签名,一旦请求内容在网络上被篡改,则无法通过数字签名比对。 签名 API 请求 为了通过 API 请求的安全验证,用户需要在客户端对其 API 请求进行签名(即生成正确的数字签名),并且使用 HTTP 头 Authorization 在网络上传输该请求的数字签名。Authorization 头的具体格式如下: Authorization:LOG : 如上格式所示,Authorization 头的值包含用户访问密钥对中的 AccessKeyId,且与之对应的 AccessKeySecret 将用于 Signature 值的构造。下面将详细解释如何构造该 Signature 值。 准备阿里云访问密钥。 为 API 请求生成签名,需使用一对访问密钥(AccessKeyId/AccessKeySecret)。您可以使用已经存在的访问密钥对,也可以创建新的访问密钥对,但需要保证使用的密钥对为启用状态。 生成请求的签名字符串。 日志服务 API 的签名字符串由 HTTP 请求中的 Method、Header 和 Body 信息一同生成,具体方式如下: SignString = VERB + "\n" + CONTENT-MD5 + "\n" + CONTENT-TYPE + "\n" + DATE + "\n" + CanonicalizedLOGHeaders + "\n" + CanonicalizedResource 上面公式中的 \n 表示换行转义字符,+(加号)表示字符串连接操作,其他各个部分定义如下所示。 表 1. 签名字符串定义 名称 定义 示例 VERB HTTP 请求的方法名称 PUT、GET、POST 等 CONTENT-MD5 HTTP 请求中 Body 部分的 MD5 值(必须为大写字符串) 875264590688CA6171F6228AF5BBB3D2 CONTENT-TYPE HTTP 请求中 Body 部分的类型 application/x-protobuf DATE HTTP 请求中的标准时间戳头(遵循 RFC 1123 格式,使用 GMT 标准时间) Mon, 3 Jan 2010 08:33:47 GMT CanonicalizedLOGHeaders 由 HTTP 请求中以 x-log 和 x-acs 为前缀的自定义头构造的字符串(具体构造方法见下面详述) x-log-apiversion:0.6.0\nx-log-bodyrawsize:50\nx-log-signaturemethod:hmac-sha1 CanonicalizedResource 由 HTTP 请求资源构造的字符串(具体构造方法见下面详述) /logstores/app_log 对于部分无 Body 的 HTTP 请求,其 CONTENT-MD5 和 CONTENT-TYPE 两个域为空字符串,这时整个签名字符串的生成方式如下: SignString = VERB + "\n" + "\n" + "\n" + DATE + "\n" + CanonicalizedLOGHeaders + "\n" + CanonicalizedResource 如公共请求头中的描述,日志服务 API 中引入了一个自定义请求头 x-log-date。如果您在请求中指定了该请求头,则其值会替代 HTTP 标准请求头 Date 加入签名计算。 CanonicalizedLOGHeaders 的构造方式如下: 将所有以 x-log 和 x-acs 为前缀的 HTTP 请求头的名字转换成小写字母。 将上一步得到的所有 LOG 自定义请求头按照字典顺序进行升序排序。 删除请求头和内容之间分隔符两端出现的任何空格。 将所有的头和内容用 \n 分隔符组合成最后的 CanonicalizedLOGHeader。 CanonicalizedResource 的构造方式如下: 将 CanonicalizedResource 设置为空字符串""。 放入要访问的 LOG 资源,如 /logstores/logstorename(如果没有 logstorename 则可不填写)。 如果请求包含查询字符串QUERY_STRING,则在 CanonicalizedResource 字符串尾部添加 ? 和查询字符串。 QUERY_STRING 是 URL 中请求参数按字典顺序排序后的字符串,其中参数名和值之间用 = 相隔组成字符串,并对参数名-值对按照字典顺序升序排序,然后以 & 符号连接构成字符串。其公式化描述如下: QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2" 生成请求的数字签名。 目前,日志服务 API 只支持一种数字签名算法,即默认签名算法 hmac-sha1。其完整签名公式如下: Signature = base64(hmac-sha1(UTF8-Encoding-Of(SignString),AccessKeySecret)) 签名的方法用 RFC 2104 中定义的 HMAC-SHA1 方法。如上公式用的 AccessKeySecret 必须和最终的 Authorization 头中使用的 AccessKeyId 相对应。否则,请求将无法通过服务端验证。 在计算出数字签名后,使用该值按本节最前面描述的 Authorization 头格式构建完整的 Log Service API 请求安全验证头,并填入 HTTP 请求中即可发送。 请求签名过程示例 为了帮助您更好地理解整个请求签名的流程,我们用两个示例来演示整个过程。首先,假设您用做日志服务 API 签名的访问密钥对如下: AccessKeyId = "bq2sjzesjmo86kq*********" AccessKeySecret = "4fdO2fTDDnZPU/L7CHNd********" 示例一 您需要发送如下 GET 请求列出 ali-test-project 项目下的所有 Logstore,其 HTTP 请求如下: GET /logstores HTTP 1.1 Mon, 09 Nov 2015 06:11:16 GMT Host: ali-test-project.regionid.example.com x-log-apiversion: 0.6.0 x-log-signaturemethod: hmac-sha1 如上 Log Service API 请求生成的签名字符串为: GET\n\n\nMon, 09 Nov 2015 06:11:16 GMT\nx-log-apiversion:0.6.0\nx-log-signaturemethod:hmac-sha1\n/logstores?logstoreName=&offset=0&size=1000 由于是 GET 请求,该请求无任何 HTTP Body,所以生成的签名字符串中 CONTENT-TYPE 与 CONTENT-MD5 域为空字符串。如果以前面指定的 AccessKeySecret 做签名运算后得到的签名为: jEYOTCJs2e88o+y5F4/S5IsnBJQ= 最后发送经数字签名的 HTTP 请求内容如下: GET /logstores HTTP 1.1 Mon, 09 Nov 2015 06:11:16 GMT Host: ali-test-project.regionid.example.com x-log-apiversion: 0.6.0 x-log-signaturemethod: hmac-sha1 Authorization: LOG bq2sjzesjmo86kq35behupbq:jEYOTCJs2e88o+y5F4/S5IsnBJQ= 示例二 您需要给同上例 ali-test-project 项目中名为 test-logstore 的 Logstore 写入下面的日志: topic="" time=1447048976 source="10.10.10.1" "TestKey": "TestContent" 为此,按照 Log Service API 定义需要构建如下 HTTP 请求: POST /logstores/test-logstore HTTP/1.1 Date: Mon, 09 Nov 2015 06:03:03 GMT Host: test-project.regionid.example.com x-log-apiversion: 0.6.0 x-log-signaturemethod: hmac-sha1 Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494 Content-Length: 52 x-log-apiversion:0.6.0 x-log-bodyrawsize:50 x-log-compresstype:lz4 x-log-signaturemethod:hmac-sha1 <日志内容序列化成 ProtoBuffer 格式的字节流> 在这个 HTTP 请求中,写入的日志内容首先被序列化成 ProtoBuffer 格式(请参见数据编码方式了解该格式的更多细节)后作为请求 Body。所以该请求的 Content-Type 头的值指定为 application/x-protobuf。类似,Content-MD5 头的值是请求 body 对应的 MD5 值。按照上面的签名字符串构造方式,这个请求对应的签名字符串为: POST\n1DD45FA4A70A9300CC9FE7305AF2C494\napplication/x-protobuf\nMon, 09 Nov 2015 06:03:03 GMT\nx-log-apiversion:0.6.0\nx-log-bodyrawsize:50\nx-log-compresstype:lz4\nx-log-signaturemethod:hmac-sha1\n/logstores/test-logstore 同样,以前面示例中的 AccessKeySecret 做签名运算,得到的最终签名为: XWLGYHGg2F2hcfxWxMLiNkGki6g= 最后发送经数字签名的 HTTP 请求内容如下: POST /logstores/test-logstore HTTP/1.1 Date: Mon, 09 Nov 2015 06:03:03 GMT Host: test-project.regionid.example.com x-log-apiversion: 0.6.0 x-log-signaturemethod: hmac-sha1 Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494 Content-Length: 52 x-log-apiversion:0.6.0 x-log-bodyrawsize:50 x-log-compresstype:lz4 x-log-signaturemethod:hmac-sha1 Authorization: LOG bq2sjzesjmo86kq35behupbq:XWLGYHGg2F2hcfxWxMLiNkGki6g= <日志内容序列化成ProtoBuffer格式的字节流>

保持可爱mmm 2020-03-26 22:52:47 0 浏览量 回答数 0

问题

有没有简单的方法可以将MySQL数据转换为Title Case??mysql

保持可爱mmm 2020-05-17 19:16:43 0 浏览量 回答数 1

回答

请求结构 发起 API 请求的 URL 由不同参数拼凑而成,有固定的请求结构。URL 中包含如下: 服务地址 通讯协议 请求方法 公共头参数 每个 API 的特有参数 每篇 API 文档均给出了 URL 请求示例供您参考,我们并没有编码这些 URL 示例,您需要在发起请求前自行编码。如果你使用 SDK 来发起 API 请求,您只需要设置一些公共参数和 API 的具体参数,SDK 会自动会编码。 公共HTTP头定义 公共请求头 对于访问授权,BatchCompute 采用阿里云通用的签名方式,即请求头部包含特定以”x-acs”开头的字段,通过计算签名和比较签名进行用户验证。其中头部必须包含的字段如下: 标准头 Header名称 类型 说明 Authorization 字符串 签名内容。该字段必选,它为非签名字段。参阅 签名机制 Content-Length 数字 Body 部分实际请求长度。如果传输是压缩格式,则为压缩后大小;如果请求不包含 Body,则数值为 0,它为非签名字段。 Content-MD5 字符串 Body 经过 MD5 计算后的字符串,计算结果为大写;如果没有 Body 部分,则不需要填写该请求头。 Content-Type 字符串 Body 类型。类型为字符串,分为 application/json 和 application/json-rpc 两种类型,默认值为 application/json;如果没有 Body 部分,则不需要填写该请求头。 Date 字符串 当前发送时刻的时间,参数目前只支持 RFC 822 格式,使用 GMT 标准时间。格式化字符串如下:%a, %d %b %Y %H:%M:%S GMT (如:Mon, 3 Jan 2010 08:33:47 GMT)。Date 所表示的时间与服务器接收到 request 的时间最大误差为 15 分钟。如果超过 15 分钟的时间误差则服务器端拒绝该请求。 Accept 字符串 客户端需要的返回值类型,支持 application/json 和application/json-rpc。默认值:无。 Host 字符串 请求 host 完整名字(不加 http:// ),例如:batchcompute.cn-qingdao.aliyuncs.com。 自定义头 Header名称 类型 说明 x-acs-version 字符串 当前 API 版本,目前版本为 2015-11-11 x-acs-compress-type 字符串 压缩方式。目前只支持 deflate,如果不压缩可以不填写该字段。 x-acs-body-rawsize 数字 Body 原始大小,当压缩时用以解压,当无 Body 时该字段为 0。范围为 0-256KB。 x-acs-signature-method 字符串 签名计算方式,目前支持“hmac-sha1”。 x-acs-signature-nonce 字符串 唯一随机数,用于防止网络重放攻击。用户在不同请求间,要使用不同的随机数值。 x-acs-access-id 字符串 用户访问 BatchCompute 的 AccessId,默认值:无。 x-acs-request-id 字符串 用户自动生成的请求 ID,以便日志跟踪。 示例 HTTP 头部格式如下: Authorization: acs [Access Key Id]:[Signature] Content-Length: 2324 contentMd5: 871bd77924e76fb320f2d13f55e8a7a2 Content-Type: application/json Date: Tue, 06 Nov 2018 06:12:40 GMT Accept: application/json Host: batchcompute.[Region].aliyuncs.com Accept-Encoding: identity User-Agent: Mozilla/5.0 (Windows NT 6.1) x-acs-version: 2015-11-11 x-acs-signature-method: HMAC-SHA1 x-acs-signature-nonce: f76e8ab8-e18a-11e8-bc78-645aede9015d x-acs-signature-version: 1.0 x-acs-access-key-id: [Access Key Id] x-acs-region-id: [Region] 返回结果 调用 API 服务后返回数据采用统一格式,具体包括: 状态码 响应头 响应数据 成功结果 返回的 HTTP 状态码为 2xx,代表调用成功; 响应数据格式为 JSON 格式,在每个 API 中有具体的描述响应数据的内容。 以下是创建集群返回 成功的示例: HTTP/1.1 201 Created Date: Tue, 06 Nov 2018 06:12:41 GMT Content-Type: application/json; charset=utf-8 Content-Length: 35 Connection: close Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-Requested-With, X-Sequence, _aop_secret, _aop_signature Access-Control-Max-Age: 172800 x-acs-request-id: D874CC9A-C2D4-4DAE-A351-1699550F11A9 Server: AliyunBatchCompute {"Id":"cls-6ki3sg6sqlno7nt8fu0007"} 错误结果 返回的 HTTP 状态码为 4xx 或 5xx ,代表调用失败,具体状态码参考 公共错误码 以及各个 API 的错误码。 返回的 Body 中包含 “Code” 和 “Message” 字段,您可以根据此信息来排查错误。 响应头中的 x-acs-request-id 包含请求的 request id。当您无法排查错误时,可以提交工单联系我们,并在工单中注明 request id。 以下是一个请求错误的示例: HTTP/1.1 400 Bad Request Date: Tue, 06 Nov 2018 08:30:40 GMT Content-Type: application/json; charset=utf-8 Content-Length: 90 Connection: close Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-Requested-With, X-Sequence, _aop_secret, _aop_signature Access-Control-Max-Age: 172800 x-acs-request-id: F067DAB7-57C4-4D08-BE49-CDB63BF5C6D2 Server: AliyunBatchCompute {"Code":"InvalidParameter.ImageId","Message":"Specified parameter ImageId is not valid. "} 公共错误码 在对 BatchCompute API 进行访问时,不同请求可能会返回不同的错误码,如下是所有公共的错误码。 状态码 错误码 错误信息 400 InvalidJsonFormat The request body has an invalid json format. 400 BadDAG It is a cyclic dag. 400 InvalidUrlPattern Specified url pattern contains some illegal words. 400 MethodNotAllowed The request http method is not supported for this resource. 400 Missing {Parameter Name} {Parameter Name} is mandatory for this action. 400 Invalid {Parameter Name} Specified parameter {Parameter Name} is not valid. {Message}. 400 IdempotentTokenMismatch Specified idempotent token mismatch. 403 InvalidVersion.NotFound Specified version is not found. 403 InvalidResource.AlreadyExisting Specified resource already exists. 403 InvalidQueryString {Message}. 403 InvalidHttpBody {Message}. 403 QuotaExhausted The {QuotaName} ({Value}) quota is exhausted. 403 Forbidden User not authorized to operate on the specified resource. 404 InvalidResource.NotFound Specified resource is not found. 409 StateConflict User operation is invalid. The current resource state is {State}. 500 InternalError The request processing has been failed due to some unknown error. 签名机制 BatchCompute 通过使用 Access Key ID/ Access Key Secret 方法来验证某个请求的发送者身份。Access Key ID 用于标示用户,Access Key Secret 是用户用于加密签名字符串和 BatchCompute 用来验证签名字符串的密钥,其中 Access Key Secret 必须保密,只有用户和 BatchCompute 知道。 当用户想以个人身份向 BatchCompute 发送请求时,需要首先将发送的请求按照 BatchCompute 指定的格式生成签名字符串;然后使用 Access Key Secret 对签名字符串进行加密产生验证码。 BatchCompute 收到请求以后,会通过 Access Key ID 找到对应的 Access Key Secret,以同样的方法提取签名字符串和验证码,如果计算出来的验证码和提供的一样即认为该请求是有效的;否则,BatchCompute 将拒绝处理这次请求,并返回 HTTP 400 错误。 用户可以在 HTTP 请求中增加 Authorization(授权)的 Head 来包含签名(Signature)信息,表明这个消息已被授权。 Authorization 字段计算方法如下: Authorization: "acs " + Access Key Id + ":" + Signature Signature = base64(hmac-sha1(AccessKeySecret, + VERB + "\n" + ACCEPT + "\n" + CONTENT-MD5 + "\n" + CONTENT-TYPE + "\n" + DATE + "\n" + CanonicalizedBatchComputeHeaders + CanonicalizedResource)) AccessKeySecret 表示签名所需的秘钥 VERB 表示 HTTP 请求的 Method,主要有 PUT,GET,POST,HEAD,DELETE 等(大写) CONTENT-MD5 表示请求内容数据的 MD5 值,详情参看(十六进制序列,字母小写) ACCEPT 表示 HTTP 请求期望接受的类型 CONTENT-TYPE 表示请求内容的类型 DATE 表示此次操作的时间,且必须为 HTTP1.1 中支持的 GMT 格式 CanonicalizedOSSHeaders 表示以“x-acs-”为前缀的 http header 的组合 CanonicalizedResource 表示 API 想要访问的 BatchCompute 资源 其中,CanonicalizedBatchComputeHeaders 表示 http 中的 object meta 组合。CanonicalizedResource 表示 API 想要访问的 BatchCompute 资源。DATE 和 CanonicalizedResource 不能为空。如果请求中的 DATE 时间和 BatchCompute 服务器的时间差正负 15 分钟以上,BatchCompute 服务器将拒绝该服务,并返回 HTTP 400 错误。其他字段请参考公共请求头参数。 构建 CanonicalizedBatchComputeHeaders 的方法: 所有以“x-acs-”为前缀的 HTTP Header 被称为 CanonicalizedBatchComputeHeaders,它的构建方法如下: 将所有以“x-acs-”为前缀的 HTTP 请求头的名字转换成小写字母。如“X-Acs-Meta-Name: TaoBao”转换成“x-acs-meta-name: TaoBao”; 将上一步得到的所有 HTTP 请求头按照字典序进行升序排列; 如果有相同名字的请求头,则根据标准 RFC 2616, 4.2 章进行合并(两个值之间只用逗号分隔)。如有两个名为“x-acs-meta-name”的请求头,对应的值分别为“TaoBao”和“Alipay”,则合并后为:“x-acs-meta-name:TaoBao,Alipay”; 删除请求头和内容之间分隔符两端出现的任何空格。如“x-acs-meta-name: TaoBao,Alipay”转换成:“x-acs-meta-name:TaoBao,Alipay”; 将所有的头和内容用“\n”分隔符分隔拼成最后的CanonicalizedBatchComputeHeader。 构建CanonicalizedResource的方法: 用户发送请求中想访问的 BatchCompute 目标资源被称为 CanonicalizedResource。它的构建方法如下: 将 CanonicalizedResource 置成空字符串(“”); 放入要访问的 BatchCompute 资源:“/ResourceName/ResourceId”(无 ResourceId 则不填); 如果请求的资源包括子资源(sub-resource) ,那么将所有的子资源按照字典序,从小到大排列并以“&”为分隔符生成子资源字符串。在 CanonicalizedResource 字符串尾添加“?”和子资源字符串。此时的 CanonicalizedResource 例子如:/jobs/(id)/tasks?Marker=(Marer)&MaxItemCount=(MaxItemCount)。 例如,需要签名以下信息: PUT /jobs/job-000000005645B53B0000AEA300000001 HTTP/1.0 Content-Md5: 900150983cd24fb0d6963f7d28e17f72 Content-Type: application/json Date: Thu, 17 Nov 2005 18:49:58 GMT Host: batchcompute.cn-qingdao.aliyuncs.com x-acs-signature-method: HMAC-SHA1 x-acs-signature-version: 1.0 其中,Access Key ID 是:“44CF9590006BF252F707”, Access Key Secret 是“OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV”,可用以下方法签名(Signature): python示例代码: import base64 import hmac import sha h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV", "PUT\n900150983cd24fb0d6963f7d28e17f72\napplication/json\nThu, 17 Nov 2005 18:49:58 GMT\nx-acs-signature-method:HMAC-SHA1\nx-acs-signature-version:1.0\n/jobs/job-000000005645B53B0000AEA300000001", sha) base64.encodestring(h.digest()).strip() 签名(Signature)计算结果应该为“26NBxoKdsyly4EDv6inkoDft/yA=”, 然后加上 Authorization 头来组成最后需要发送的消息: PUT /jobs/job-000000005645B53B0000AEA300000001 HTTP/1.0 Authorization: acs 44CF9590006BF252F707: 26NBxoKdsyly4EDv6inkoDft/yA= Content-Md5: 900150983cd24fb0d6963f7d28e17f72 Content-Type: application/json Date: Thu, 17 Nov 2005 18:49:58 GMT Host: batchcompute.cn-qingdao.aliyuncs.com x-acs-signature-method: HMAC-SHA1 x-acs-signature-version: 1.0 在计算签名头的时候请遵循如下规则: 用来签名的字符串必须为 UTF-8 格式。含有中文字符的签名字符串必须先进 UTF-8 编码,再与 Access Key Secret 计算最终签名。 签名的方法用 RFC 2104 中定义的 HMAC-SHA1 方法,其中 Key 为 Access Key Secret。 Content-Type 和 Content-MD5 在请求中不是必须的,但是如果请求需要签名验证,空值的话以换行符“\n”代替。 在所有非 HTTP 标准定义的 header 中,只有以“x-acs-”开头的 header,需要加入签名字符串;其他非 HTTP 标准 header 将被忽略。 以“x-acs-”开头的 head 在签名验证前需要符合以下规范: head 的名字需要变成小写。 head 按字典序自小到大排序。 分割 head name 和 value 的冒号前后不能有空格。 每个Head之后都有一个换行符“\n”,如果没有 Head,CanonicalizedBatchComputeHeaders 就设置为空。 备注:BatchCompute 所有的请求都必须使用 HTTP 1.1 协议规定的 GMT 时间格式 。其中,日期的格式有三种: date1 = 2DIGIT SP month SP 4DIGIT; day month year (e.g., 02 Jun 1982) date2 = 2DIGIT “-“ month “-“ 2DIGIT; day-month-year (e.g., 02-Jun-82) date3 = month SP ( 2DIGIT or ( SP 1DIGIT )); month day (e.g., Jun 2) 【注意“2”前面有两个空格】 述这三种日期格式中,“天”所占位数都是“2 DIGIT”。因此,“Jun 2”、“2 Jun 1982”和“2-Jun-82”都是非法日期格式。

1934890530796658 2020-03-30 11:47:50 0 浏览量 回答数 0

问题

OceanBase支持的字符串函数

云栖大讲堂 2019-12-01 21:28:39 1483 浏览量 回答数 0

回答

他们是不一样的。让我解释一下区别。 forEach:这会遍历列表,并对每个列表成员应用一些有副作用的操作(例如:将每个列表项保存到数据库) map:这会遍历一个列表,转换该列表的每个成员,然后返回与转换后的成员大小相同的另一个列表(例如:将字符串列表转换为大写)

保持可爱mmm 2020-02-08 12:04:42 0 浏览量 回答数 0

问题

MaxCompute用户指南:SQL:内建函数:字符串函数

行者武松 2019-12-01 22:02:59 1587 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播