欢迎访问皮皮网官网
皮皮网

【货啦啦源码】【简易商场php源码】【vscode阅读源码工具】isnumeric源码

时间:2024-11-26 17:45:00 分类:娱乐 来源:c cs 框架源码

1.「安卓按键精灵」几种字符串提取的方法(源码)
2.你知道ApacheCommon包中isNumeric方法是坑吗?

isnumeric源码

「安卓按键精灵」几种字符串提取的方法(源码)

       截取法提取两个字符串之间的内容

       TracePrint GetStrAB("如果想要写成一行代码,那么就可以用冒号连接","想要","代码")

       Function GetStrAB(str,StrA,StrB)

       If UTF8.InStr(1, str, StrA)>0 and utf8.instr(1,str,StrB) > 0 Then

       Dim m=utf8.instr(1,Str,StrA)

       Dim n=utf8.instr(m,Str,StrB)

       GetStrAB=utf8.mid(str,m+utf8.len(StrA),n-m-utf8.len(StrA))

       End If

       End Function

       分割法提取字符串

       TracePrint SplitStrAB("如果想要写成一行代码,那么就可以用冒号连接","想要","代码")

       Function SplitStrAB(str, StrA, StrB)

       If UTF8.InStr(1, str, StrA) > 0 and UTF8.InStr(1, str, StrB) > 0 Then

       Dim arr_A=split(str,StrA)

       Dim arr_B=split(arr_A(1),StrB)

       SplitStrAB=arr_B(0)

       end if

       End Function

       取多组两个字符串之间的内容

       Dim arr=GetStrArr("如果(公众号3分钟学堂)写成一行(代码),那么就(可以)用冒号连接",货啦啦源码"(",")")

       For Each k In arr

       TracePrint k

       Next

       Function GetStrArr(str, StrA, StrB)

       If UTF8.InStr(1, str, StrA) > 0 and UTF8.InStr(1, str, StrB) > 0 Then

       Dim str_arr=array()

       Dim n=0

       Dim arr_A=split(str,StrA)

       Dim arr_B

       For i = 1 To UBOUND(arr_A)

       If InStr(1,arr_A(i),StrB) > 0 Then

       arr_B = Split(arr_A(i), StrB)

       str_arr(n) = arr_B(0)

       n=n+1

       End If

       Next

       GetStrArr=str_arr

       end if

       End Function

       提取数字

       TracePrint GetNum("如果_ba@d1b都是a2aaf%b连接")

       Function GetNum(str)

       Dim Num

       For i = 1 To UTF8.Len(str)

       If IsNumeric(utf8.StrGetAt(str,i)) Then

       Num=Num&utf8.StrGetAt(str,i)

       End If

       Next

       GetNum=Num

       End Function

       提取字母

       TracePrint GetZm("如果_ba@d1b都是a2aaf%b连接")

       Function GetZm(str)

       Dim zm

       For i = 1 To UTF8.Len(str)

       If < CInt(Asc(utf8.StrGetAt(str, i))) < or < CInt(Asc(utf8.StrGetAt(str, i))) < Then

       zm=zm&utf8.StrGetAt(str,i)

       End If

       Next

       GetZm=zm

       End Function

       提取汉字

       TracePrint GetCN("如果_ba@d1b都是a2aaf%b连接")

       Function GetCN(str)

       Dim CN

       For i = 1 To UTF8.Len(str)

       If Len(utf8.StrGetAt(str, i)) = 3 Then

       CN=CN&utf8.StrGetAt(str, i)

       End If

       Next

       GetCN=CN

       End Function

       正则提取数字

       import"shanhai.lua"

       Dim str="如果_ba@d1b都是a2aaf%b连接"

       dim arr= shanhai.RegexFind(str,"%d+")

       TracePrint join(arr,"")

       正则提取字母

       import"shanhai.lua"

       Dim str="如果_ba@d1D都是a2aaf%b连接"

       dim arr= shanhai.RegexFind(str,"%a+")

       TracePrint join(arr,"")

       正则提取汉字

       import"shanhai.lua"

       Dim str="如果_ba@d1D都是a2aaf%b连接"

       dim arr= shanhai.RegexFind(str,"[\-\]+")

       TracePrint join(arr,"")

       本期文章是源码分享的形式,感兴趣的朋友可以复制源码在按键中运行一下,自己照着去写写就可以学会。简易商场php源码

你知道ApacheCommon包中isNumeric方法是坑吗?

       使用的Apache-Common包的版本是commons-lang-2.6.jar

       本文就来分享一个这个坑的情况,以免其它tx也掉坑中

       费话不多说,来看代码: package chapter4; import org.apache.commons.lang.StringUtils; /** * Created by MyWorld on /3/. */ public class StringUtilsIsNumericChecker { public static void main(String[] args) { System.out.println(StringUtils.isNumeric("1")); System.out.println(StringUtils.isNumeric("-1")); } }

       围观的tx,认为上面api的输出结果会是什么呢?两个true? 好吧,执行一行看看结果: true false

       什么情况,-1不是数字吗? 为什么是false呢 来分析下源码: public static boolean isNumeric(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i sz; i++) { if (Character.isDigit(str.charAt(i)) == false) { return false; } } return true; }

       源码中判断是否数字的依据是JDK的API: java.lang.Character.isDigit(str.charAt(i)) 看看个API的源码: public static boolean isDigit(char ch) { return isDigit((int)ch); }

       看看isDigit(int codePoint)的源码: public static boolean isDigit(int codePoint) { boolean bDigit = false; if (codePoint = MIN_CODE_POINT codePoint = FAST_PATH_MAX) { bDigit = CharacterDataLatin1.isDigit(codePoint); } else { int plane = getPlane(codePoint); switch(plane) { case(0): bDigit = CharacterData.isDigit(codePoint); break; case(1): bDigit = CharacterData.isDigit(codePoint); break; case(2): bDigit = CharacterData.isDigit(codePoint); break; case(3): // Undefined case(4): // Undefined case(5): // Undefined case(6): // Undefined case(7): // Undefined case(8): // Undefined case(9): // Undefined case(): // Undefined case(): // Undefined case(): // Undefined case(): // Undefined bDigit = CharacterDataUndefined.isDigit(codePoint); break; case(): bDigit = CharacterData0E.isDigit(codePoint); break; case(): // Private Use case(): // Private Use bDigit = CharacterDataPrivateUse.isDigit(codePoint); break; default: // the argument's plane is invalid, and thus is an invalid codepoint // bDigit remains false; break; } } return bDigit; }

       下面还有更深的调用,貌似还涉及到ASCII码了。vscode阅读源码工具 水太深,就不继续看了。 有一点是常用kettle源码修改肯定的,这个API不是通过类似Regex expression的方式来判断是数字,而通过每个字符的ASCII的值类确定的 回到API的isNumeric(String str), 看看Doc是公司ae片头源码怎么说的: /** * pChecks if the String contains only unicode digits. * A decimal point is not a unicode digit and returns false./p * * pcodenull/code will return codefalse/code. * An empty String (length()=0) will return codetrue/code./p * * pre * StringUtils.isNumeric(null)  = false * StringUtils.isNumeric("")   = true * StringUtils.isNumeric(" ")  = false * StringUtils.isNumeric("") = true * StringUtils.isNumeric(" 3") = false * StringUtils.isNumeric("ab2c") = false * StringUtils.isNumeric("-3") = false * StringUtils.isNumeric(".3") = false * /pre * * @param str the String to check, may be null * @return codetrue/code if only contains digits, and is non-null */

       看完上面的Doc,感觉水好深。 这个API的方法名直接命名为isInt不就完了。方法名很容易误导人 这也是给开发的tx敲了一个警钟, api使用之前一定要确认清楚,至少看看Doc文档吧

copyright © 2016 powered by 皮皮网   sitemap