C#窗体程序:《码农的变量名》
C#窗体程序:《码农的变量名》源码分析为解决敲代码过程变量命名的烦恼于是我做了《码农的变量名》,可以一键翻译并进行变量命名的规范。下面为大家分析一下实现的过程。翻译API首先要实现的是翻译功能,这里可以在网上查找一些官方的翻译api就能够解决,我用的是有道的api//获取输入的中文string bnm = textBox1.Text;//调用有道api拼接参数并进行post请求就能返...
·
C#窗体程序:《码农的变量名》
《码农的变量名》下载地址:码农的变量名
为解决敲代码过程变量命名的烦恼于是我做了《码农的变量名》,可以一键翻译并进行变量命名的规范。下面为大家分析一下实现的过程。
翻译API
首先要实现的是翻译功能,这里可以在网上查找一些官方的翻译api就能够解决,我用的是有道的api
//获取输入的中文
string bnm = textBox1.Text;
//调用有道api拼接参数并进行post请求就能返回翻译后的结果
string json = HttpUitls.Post("http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i="+ bnm, "","");
这里翻译之后返回的是一个字符串,C#要其转换成json还需要在进行各种封装,这样十分的麻烦因为返回的结果比较简单,于是可以直接进行字符串切割提取最终的翻译结果。
这是调用Api之后返回的字符串,最终需要只是最后的 hello
翻译结果截取
根据返回的结果,可以实用支付串截取的方式进行翻译结果的获取,即需要截取 "tgt":
到 "}
之间的字符串就可以了。
int IndexofA = json.IndexOf("\"tgt\":");//获取"tgt":的开始位置
int IndexofB = json.IndexOf("\"}");//获取"}的开始位置
//IndexofA + 7为开始位置,IndexofA-IndexofB-7获取到的翻译结果长度
string Ru = json.Substring(IndexofA + 7, IndexofB - IndexofA - 7);
变量命名规范
获取到翻译结果后,下一步就是将翻译结果进行变量命名的规范处理即大驼峰与小驼峰的命名。
翻译结果如果有多个单词是以空格分开的,与只需通过切割空格再进行首字母的大小转换就可以了
string xtfmm = "";string dtfmm = ""; int ss = 0;
//通过空格切割成数组
string[] sArray = Regex.Split(Ru, " ", RegexOptions.IgnoreCase);
foreach (string i in sArray) {
ss++;
//判断首个单词
if (ss == 1)
{
//小驼峰首字母小写,大驼峰首字母大写
xtfmm = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(i);
dtfmm = i.First().ToString().ToLower() + i.Substring(1);
}
else
{
//其余首字母全部大写
string hdcxx= System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(i);
xtfmm += hdcxx; dtfmm += hdcxx;
}
}
联网判断
基本事件处理好了之后,打包发布之后还是存部分问题。
由于需要调用API,软件运行时是需要联网的,而如果没有网络再post请求是就会直接报错,于是还需再请求前加一个联网判断。
public class Net{
[DllImport("wininet")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
public bool IsConnectedInternet()
{
int i = 0;
if (InternetGetConnectedState(out i, 0))
{
return true;//联网返回true
}
else
{
return false;//未联网返回false
}
}
}
//请求前进行调用判断
Net news = new Net();
bool connected = newsa.IsConnectedInternet();
if (connected == false)
{
MessageBox.Show("请先连接网络",MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
更多推荐
已为社区贡献1条内容
所有评论(0)