Flex:对日本旧历日期及其它输入内容的验证。
由于客户要求,希望日期采用日本的旧历算法,并且要求验证。
我自己写了下面这个程序,我在代码方面还不成熟,有很多不足的地方,可能还存在Bug,希望有好的建议告诉我哦。
JapaneseCalendar.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="370" height="26" horizontalGap="4"
horizontalAlign="left" paddingLeft="2" paddingTop="2"
creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.managers.IFocusManagerComponent;
import validate.ErrorValidate;
import mx.managers.PopUpManager;
import define.MsgCodeConst;
import define.DefineCodeConst;
import mx.collections.ArrayCollection;
[Bindable]
public var myTitle:String = "";
[Bindable]
public var myAC:ArrayCollection = new ArrayCollection([
"明治", "大正", "昭和", "平成"]);
private var errorArry:ArrayCollection = null;
private var year:int = 0;
private var month:int = 0;
private var date:int = 0;
private var gregorianYear:int = 0;
private var isLeapYear:Boolean = false;
public function getYearName():String
{
return gengo.selectedLabel;
}
public function getYear():String
{
return dob_Year.text;
}
public function getMonth():String
{
return dob_Month.text;
}
public function getDate():String
{
return dob_Date.text;
}
private function init():void
{
focusManager.setFocus(IFocusManagerComponent(gengo));
}
public function doValid():ArrayCollection
{
year = int(dob_Year.text);
month = int(dob_Month.text);
date = int(dob_Date.text);
errorArry = new ArrayCollection();
var nowDate:Date = new Date();
isLeapYear = isLeapYearCheck(gengo.text,year);
gengo.setStyle(DefineCodeConst.BORDER_COLOR,DefineCodeConst.BLACK_COLOR);
dob_Year.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.BLANK_COLOR);
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.BLANK_COLOR);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.BLANK_COLOR);
if(gengo.selectedIndex < 0)
{
errorArry.addItem(myTitle + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0002);
gengo.setStyle(DefineCodeConst.BORDER_COLOR,DefineCodeConst.PINK_COLOR);
}
if(dob_Year.text == "")
{
dob_Year.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(yearLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0001);
}
else if(!ErrorValidate.isHalfNum(dob_Year.text))
{
dob_Year.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(yearLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0006);
}
else if(year < 1)
{
errorArry.addItem(MsgCodeConst.ERR_0017);
dob_Year.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if(dob_Month.text == "")
{
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(monthLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0001);
}
else if(!ErrorValidate.isHalfNum(dob_Month.text))
{
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(monthLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0006);
}
else if((month < 1) || (month > 12))
{
errorArry.addItem(MsgCodeConst.ERR_0018);
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if(dob_Date.text == "")
{
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(dateLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0001);
}
else if(!ErrorValidate.isHalfNum(dob_Date.text))
{
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
errorArry.addItem(dateLabel.text + MsgCodeConst.ERR_TAG + MsgCodeConst.ERR_0006);
}
else if((date < 1) || (date > 31))
{
errorArry.addItem(MsgCodeConst.ERR_0019);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
/* 明治 1868年1月25日~1912年7月29日 1868 1912 45
大正 1912年7月30日~1926年12月24日 1912 1926 15
昭和 1926年12月25日~1989年1月7日 1926 1989 64
平成 1989年1月8日~ 1989 2008 20 */
doValidJapaneseCalendar("明治",45,1,25,7,29);
doValidJapaneseCalendar("大正",15,7,30,12,24);
doValidJapaneseCalendar("昭和",64,12,25,1,7);
doValidJapaneseCalendar("平成",(nowDate.fullYear-1989+1),1,8,nowDate.getMonth()+1,nowDate.getDate());
isMonthCheck(month);
isAgeCheck();
if(errorArry.length > 0)
{
return errorArry;
}
else
{
return new ArrayCollection();
}
}
/********************************************************<BR>
* メソッド名: doValidJapaneseCalendar <BR>
* <BR>
* 機能概要:指定された和暦が正しい日付かどうかをチェックする <BR>
* <BR>
* @return ない <BR>
* <BR>
* @作者 Tenghy <BR>
* <BR>
* @serialData 2008 08 22 <BR>
*********************************************************/
private function doValidJapaneseCalendar(YearName:String, maxYear:int, startMonth:int, startDate:int,
endMonth:int, endDate:int):void
{
if(gengo.text == YearName)
{
if(year > maxYear)
{
errorArry.addItem(MsgCodeConst.ERR_0024);
dob_Year.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if((year == maxYear) && (month > endMonth))
{
errorArry.addItem(MsgCodeConst.ERR_0024);
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if((year == maxYear) && (month == endMonth) && (date > endDate))
{
errorArry.addItem(MsgCodeConst.ERR_0024);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if((year == 1) && (month < startMonth))
{
errorArry.addItem(MsgCodeConst.ERR_0024);
dob_Month.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
if((year == 1) && (month == startMonth) && (date < startDate))
{
errorArry.addItem(MsgCodeConst.ERR_0024);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
}
}
/********************************************************<BR>
* メソッド名: isMonthCheck <BR>
* <BR>
* 機能概要:毎月最大の日をチェックする <BR>
* <BR>
* @return ない <BR>
* <BR>
* @作者 Tenghy <BR>
*
* @serialData 2008 08 21 <BR>
*********************************************************/
private function isMonthCheck(moth:int):void
{
switch(month)
{
case 4:
case 6:
case 9:
case 11:
if(date > 30)
{
errorArry.addItem(MsgCodeConst.ERR_0021);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
break;
case 2:
if(isLeapYear && (date > 29))
{
errorArry.addItem(MsgCodeConst.ERR_0022);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
else if(!isLeapYear && (date > 28))
{
errorArry.addItem(MsgCodeConst.ERR_0023);
dob_Date.setStyle(DefineCodeConst.BACKGROUND_COLOR,DefineCodeConst.PINK_COLOR);
}
break;
}
}
/********************************************************<BR>
* メソッド名: isLeapYearCheck <BR>
* <BR>
* 機能概要:指定された西暦を表す年が閏年かをチェックする <BR>
* <BR>
* @return ない <BR>
* <BR>
* @作者 Tenghy <BR>
*
* @serialData 2008 08 21 <BR>
*********************************************************/
private function isLeapYearCheck(YearName:String,japaneseYear:int):Boolean
{
if(YearName == "明治")gregorianYear = japaneseYear + 1868 - 1;
if(YearName == "大正")gregorianYear = japaneseYear + 1912 - 1;
if(YearName == "昭和")gregorianYear = japaneseYear + 1926 - 1;
if(YearName == "平成")gregorianYear = japaneseYear + 1989 - 1;
if( ((gregorianYear % 4 == 0) && (gregorianYear % 100 != 0)) || (gregorianYear % 400 == 0 ) )
{
return true;
}
else
{
return false;
}
}
/********************************************************<BR>
* メソッド名: isAgeCheck <BR>
* <BR>
* 機能概要:満20歳以上をチェックする <BR>
* <BR>
* @return ない <BR>
* <BR>
* @作者 Tenghy <BR>
*
* @serialData 2008 08 21 <BR>
*********************************************************/
private function isAgeCheck():void
{
var nowDate:Date = new Date();
var inputDate:Date = new Date();
inputDate.setUTCFullYear(gregorianYear,month,date);
if(nowDate.getUTCFullYear() - inputDate.getUTCFullYear() < 20)
{
errorArry.addItem(MsgCodeConst.ERR_0020);
}
}
]]>
</mx:Script>
<mx:ComboBox height="22" id="gengo" width="126" dataProvider="{myAC}"/>
<mx:TextInput id="dob_Year" width="50" height="22" maxChars="2"/>
<mx:Label text="年" id="yearLabel"/>
<mx:TextInput id="dob_Month" height="22" width="30" maxChars="2"/>
<mx:Label text="月" id="monthLabel"/>
<mx:TextInput id="dob_Date" height="22" width="30" maxChars="2"/>
<mx:Label text="日" id="dateLabel"/>
</mx:HBox>
ErrorValidate.as文件,
package validate
{
import sice.validator.IValidateItem;
public class ErrorValidate
{
/********************************************************<BR>
* メソッド名: isLenNum <BR>
* 機能概要:i~jであるかどうかチェックする <BR>
* (integer,float,double) <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
* @author TengHY <BR>
*********************************************************/
public static function isLenNum(str:String,i:int,j:int):Boolean{
if(str.length<=j && str.length >=i ){
return true;
}else{
return false;
}
}
/********************************************************<BR>
* メソッド名: isLargeEng <BR>
* 機能概要:英大文字であるかどうかチェックする <BR>
* (integer,float,double) <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isLargeEng(str:String):Boolean {
var c:String;
var iLength:int = str.length;
var checkUpperEn:Boolean = false;
var ex2:String = "/[A-Z]";
var re2:RegExp = new RegExp(ex2, "j");
for (var i:int = 0; i < iLength; i++) {
c = str.charAt(i);
if(re2.test(c)) {
checkUpperEn = true;
break;
}
}
return checkUpperEn;
}
/********************************************************<BR>
* メソッド名: isHalfNumberCheck <BR>
* 機能概要:半角数字であるかどうかチェックする <BR>
* (integer,float,double) <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isHalfNum(str:String):Boolean
{
var c:int;
var retValue:Boolean = true;
for (var i:int = 0; i < str.length; i++){
c = str.charCodeAt(i);
if (!(c >= 0x30 && c <= 0x39)){
retValue = false;
break;
}
}
return retValue;
}
/********************************************************<BR>
* メソッド名: isFullKanaCheck <BR>
* 機能概要:全角カナであるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isFullKana(str:String):Boolean
{
var c:int;
var retValue:Boolean = true;
for (var i:int = 0; i < str.length; i++)
{
var cc:String = str.charAt(i);
var accChar:String = " ,、,。,,,.,・,:,;,?,!,゛,゜,´,`,¨,^, ̄," +
"_,ヽ,ヾ,ゝ,ゞ,〃,仝,々,〆,〇,ー,―,‐,/,\,~,∥,|,…,‥,‘," +
"’,“,”,(,),〔,〕,[,],{,},〈,〉,《,》,「,」,『,』,【,】,+,-,±,×,÷," +
"=,≠,<,>,≦,≧,∞,∴,♂,♀,°,′,″,℃,¥,$,¢,£,%,#,&,*," +
"@,§,☆,★,○,●,◎,◇,◆,□,■,△,▲,▽,▼,※,〒,→,←,↑,↓,〓,∈,∋," +
"⊆,⊇,⊂,⊃,∪,∩,∧,∨,¬,⇒,⇔,∀,∃,∠,⊥,⌒,∂,∇,≡,≒,≪,≫," +
"√,∽,∝,∵,∫,∬,Å,‰,#,♭,♪,†,‡,¶,◯,";
if ((accChar.indexOf(cc)) == -1){
c = str.charCodeAt(i);
if (!((c > 0x30a0) && (c < 0x30ff)) && !((c > 0xff09) && (c < 0xff5b)))
{
retValue = false;
break;
}
}
}
return retValue;
}
/********************************************************<BR>
* メソッド名: isKana <BR>
* 機能概要:全角カナであるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isKana(str:String):Boolean
{
var c:int;
var retValue:Boolean = true;
for (var i:int = 0; i < str.length; i++)
{
var cc:String = str.charAt(i);
c = str.charCodeAt(i);
if (!((c > 0x30a0) && (c < 0x30ff)) && !((c > 0xff09) && (c < 0xff5b)))
{
retValue = false;
break;
}
}
return retValue;
}
/********************************************************<BR>
* メソッド名: isZenkakuCheck <BR>
* 機能概要:全角であるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isZenKaku(str:String):Boolean
{
var c:Number;
var Length:int = 0;
if(str == null || str.length == 0)
{
return true;
}
var lineStrs:Array = str.split("/r");
var lineLength:Number = lineStrs.length;
if(lineLength != 0)
{
for(var i:int = 0; i < lineLength; i++)
{
var strLine:String = lineStrs[i];
if(strLine == null || strLine == "")
{
//continue;
}
else
{
for (var j:int = 0; j < strLine.length; j++)
{
c = strLine.charCodeAt(j);
if (!charZenkaku(c))
return false;
}
}
}
}
else
{
if(str == null || str == "")
{
//continue;
} else {
for (var n:int = 0; n < str.length; n++)
{
c = str.charCodeAt(n);
if (!charZenkaku(c))
return false;
}
}
}
return true;
}
/********************************************************<BR>
* メソッド名: isHalfEng <BR>
* 機能概要:半角英文字であるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isHalfEng(str:String):Boolean
{
var c:int;
for (var i:int = 0; i < str.length; i++)
{
c = str.charCodeAt(i);
if (!charHalfEng(c))
return false;
}
return true;
}
/********************************************************<BR>
* メソッド名: isHalfLowerEngNum <BR>
* 機能概要:半角英数文字であるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isHalfLowerEngNum(str:String):Boolean
{
var c:int;
for (var i:int = 0; i < str.length; i++)
{
c = str.charCodeAt(i);
if (!charHalfNum(c) && !charHalfLowerEng(c))
return false;
}
return true;
}
public static function isHalfLowerEngNumAndSingle(str:String):Boolean
{
var c:int;
for (var i:int = 0; i < str.length; i++)
{
c = str.charCodeAt(i);
if (!charHalfNum(c) && !charHalfLowerEng(c)
&& (c != 0x2e)
&& (c != 0x2d)
&& (c != 0x5f))
return false;
}
return true;
}
/********************************************************<BR>
* メソッド名: isHalfEngNum <BR>
* 機能概要:半角英数文字であるかどうかチェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isHalfEngNum(str:String):Boolean
{
var c:int;
for (var i:int = 0; i < str.length; i++)
{
c = str.charCodeAt(i);
if (!charHalfNum(c) && !charHalfEng(c))
return false;
}
return true;
}
/********************************************************<BR>
* メソッド名: isMaxLength <BR>
* 機能概要:max長チェックする <BR>
* <BR>
* @param 引数:value 入力文字列 <BR>
* <BR>
* @return 戻り値 True: はい False: いいえ <BR>
* <BR>
* @serialData 2008 08 15 <BR>
*********************************************************/
public static function isMaxLength(str:String,maxLength:int):Boolean
{
var c:Number;
var Length:int = 0;
for (var i:int = 0; i < str.length; i++){
c = str.charCodeAt(i);
if ((c < 128) || ((c > 160) && (c < 224))
|| ((c > 65376) && (c < 65440))){
Length++;
}
else{
Length += 2;
}
}
if (Length > maxLength || Length <= 0 ){
return false;
}
return true;
}
private static function charZenkaku(c:Number):Boolean
{
return !((c < 128) || (c > 65376 && c < 65440));
}
private static function charHalfEng(c:Number):Boolean
{
return charHalfLowerEng(c) || charHalfUpperEng(c);
}
private static function charHalfLowerEng(c:Number):Boolean
{
return (c >= 0x61 && c <= 0x7a);
}
private static function charHalfUpperEng(c:Number):Boolean
{
return (c >= 0x41 && c <= 0x5a);
}
private static function charHalfNum(c:Number):Boolean
{
return (c >= 0x30 && c <= 0x39);
}
}
}
MsgCodeConst.as
package define
{
public class MsgCodeConst
{
public static const ERR_0001:String = "入力必須項目です";
public static const ERR_0002:String = "選択必須項目です";
public static const ERR_0003:String = "半角の文字は使用できません";
public static const ERR_0004:String = "カタカナ以外の文字は使用できません";
public static const ERR_0005:String = "使用できない文字が入力されています";
public static const ERR_0006:String = "数字以外の文字は使用できません";
}
DefineCodeConst.as
package define
{
public class DefineCodeConst
{
public static const PINK_COLOR:String = "#ffe7de";
public static const BLACK_COLOR:String = "#eeeeee";
public static const BLANK_COLOR:String = "#FFFFFF";
public static const AUTOMATIC_INPUT_COLOR:String = "#EEEEEE";
public static const BACKGROUND_COLOR:String = "backgroundColor";
public static const BORDER_COLOR:String = "borderColor";
public static const AUTOMATIC_INPUT:String = "自動入力されます";
}
}
Flex:对日本旧历日期及其它输入内容的验证。相关推荐
- input失去焦点验证格式_input获取、失去焦点对输入内容做验证
注册 {#form添加novalidate参数,代表取消前端h5的验证,比如邮箱格式验证#}{% csrf_token %} {{ form_obj.username.label }} {{ form ...
- vue设置输入框输入长度_vue输入框限制字符串长度和输入内容实时验证的实现方式...
一.最简单,通过maxlength和onkeyup ?:;'\\\$\%\^\&\*\(\)\-\|\[\]\{\}\{\}]/g,'');" /> 代码中正则是限制除中文外的 ...
- java语言显示运算时间_JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天...
本文主要向大家介绍了JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. ACM日期 ...
- 日期计算:输入某年某月某日,判断这一天是这一年的第几天?
编程:日期计算:输入某年某月某日,判断这一天是这一年的第几天? 1).程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第 几天, 特殊情况,闰年且输入月份大于3时需考虑多加一 ...
- html输入格式限制,jQuery输入框限制输入内容格式插件
jquery.mask.js是一款jQuery输入框限制输入内容格式插件.该插件可以通过指定的规则来限制用户在输入框中输入的内容,例如限制日期格式,限制电话号码格式等,非常实用. 安装 可以通过Bow ...
- 【el-table在表格外的input输入框输入内容实时查询出表格相应数据】
@el-table在表格外的input输入框输入内容实时查询出表格相应数据 项目场景: 最近遇到一个需求,需要在查询框输入内容时实时查询出表格数据 具体实现方法: <template>&l ...
- html正则表达式登录验证,用正则表达式验证登录页面的输入内容
这次给大家带来用正则表达式验证登录页面的输入内容,用正则表达式验证登录页面输入内容的注意事项有哪些,下面就是实战案例,一起来看一下. 先给大家展示下效果图: 废话不多说了,直接给大家贴代码了,具体代码 ...
- python 实现可以一直输入内容直到某个特定的值退出循环的操作
使用while 循环这里记录 方法1 while True:msg = input("请输入内容 : ").replace(" ", "") ...
- Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
功能:在textbox中输入内容,动态从数据库模糊查询显示到下拉框中,以供选择 1.建立一aspx页面,html代码 <HTML> <HEAD> < ...
最新文章
- Objective C浅拷贝和深拷贝
- 5界面怎么做窗帘拉动的效果_别让土味窗帘毁了你的家
- File.Create创建文件后,需要释放…
- java8 streams_Java 8 Streams API作为友好的ForkJoinPool外观
- JS限制表单输入特效代码
- xflash里的hello world程序
- 从图森未来的数据处理平台,看Serverless工作流应用场景
- spring boot配置logback日志
- web文件服务器 开源,10个开源的基于WEB的文件管理器
- 用U盘安装Linux系统的简单方法
- 实例构造器与类型构造器
- python爬虫执行js代码_python爬虫执行js代码-execjs
- java生成激活码算法_java实现的AES秘钥生成算法示例
- 关于Android 启动页加载先预加载系统白页问题
- Ubantu16.04安装五笔拼音输入法
- Android---WMS核心分析
- 夜天之书 #26 Four-Factor OSC
- 盘古开源顺势转型,开拓芯片市场
- vue的组件内部全局变量按照使用的前端id存储历史数据
- 论文翻译-Scene Text Detection and Recognition: The Deep Learning Era
热门文章
- 金融结构的经济学分析
- python期货外盘不间断交易_外盘期货模拟交易【最新版】_数据API_数据应用_股票行情接口/API-云市场-阿里云...
- 当前页面的video只播放一个
- Python校园网定时自动登录-锐捷
- 【UVA 12657】移动盒子 Boxes in a Line
- 你想要的宏基因组-微生物组知识全在这(1909)
- 软件开发时,比较好的辅助软件推荐
- 【Win10高分辨率缩放】Win10系统画面图标太小
- 清华同方主机装系统过程中进不去bios
- sql Mirroring