有懂C#的VB大虾没,帮忙把这个方法转成C#下吧,小女万分感谢.
long length_string,step_string,asc_char,i
string pym_string,pym,char_string
// 取得字符串长度
length_string = len(hz_cluster)
// 设定初始值
i = 1
pym_string = ' '
do until i > length_string
char_string = mid(hz_cluster,i,1)
asc_char = asc(char_string)
// 设定默认步长
step_string = 1
if asc_char > 64 and asc_char < 91 then // 大写字母
pym = char_string
elseif asc_char > 96 and asc_char < 123 then // 小写字母
pym = char_string
elseif asc_char > 47 and asc_char < 58 then // 数字
pym = char_string
elseif asc_char > 127 then // 汉字,步长为2
char_string = mid(hz_cluster,i,2)
select pym into :pym from sys_hzk where hz=:char_string;
If Sqlca.sqlcode <> 0 Then pym = '* '
pym = mid(pym,1,1)
step_string = 2
else // 其它字符
pym = ' '
end if
i = i + step_string
pym_string = pym_string + pym
loop
// 以小写方式返回
return left(upper(pym_string),12)
[解决办法]
{ long length_string = 0, step_string = 0, i;//asc_char = 0, string pym_string = string.empty, pym = string.empty; char char_string = ""; // 取得字符串长度 length_string = hz_cluster.Length; // 设定初始值 i = 1; //pym_string = ' ' 上面已赋初值 while(i > length_string) { char_string = hz_cluster.Substring(i,1); //asc_char = asc(char_string) // 设定默认步长 step_string = 1 if ((char_string > 64) && (char_string < 91))// 大写字母 { pym = char_string; } else if ((char_string > 96) && (char_string < 123)) // 小写字母 { pym = char_string; } else if ((char_string > 47) && (char_string < 58)) // 数字 { pym = char_string; } else if (char_string > 127) // 汉字,步长为2 { char_string = hz_cluster.Substring(i,2); //////////////////////////////////////////////////////////// /* select pym into :pym from sys_hzk where hz=:char_string;*/ //这句是从数据库查询? if(Sqlca.sqlcode <> 0) { pym = "*"; } pym = pym.Substring(1,1); step_string = 2 } else {// 其它字符 pym = ""; } i += step_string; pym_string = pym_string + pym; } // 以小写方式返回 return pym_string.ToLower().Substring(0,12);}