C# 代码转换为 Flex 代码:实现字符串分割和字典功能
C# 代码转换为 Flex 代码:实现字符串分割和字典功能
Flex 语言中没有直接调用类似 C# 中的 Regex.Split 方法的函数,需要自己实现字符串的分割。另外,Flex 语言中没有类似 C# 中的 Dictionary 类,需要使用 Object 类型和 Array 类型来实现类似的功能。以下是改造后的 Flex 代码:
// 获取 zfblRes
var zfblRes:String = seiproxy1.getvarstring('zfbl');
// 写入日志
CommonDatacClass.WriteTextLog(CommonDatacClass.User_YlJgBm, action, zfblRes);
// 分割 zfblRes
var zfbls:Array = zfblRes.split('/');
var zfblData:Object = {};
var count:int = 0;
var zfblEach:Number = 0;
for (var k:int = 0; k < zfbls.length - 1; k++)
{
if (!zfblData.hasOwnProperty(zfbls[k])
&& (zfbls[k].indexOf(xzbz) != -1 && (zfbls[k].indexOf(rqlb) != -1 || zfbls[k].indexOf(rqlbZGJM) != -1)))
{
count++;
zfblData[count] = zfbls[k];
zfblEach = Number(zfbls[k].split('#v')[0]);
}
}
var zfbl:Number = 0;
if (count == 1)
{
zfbl = zfblEach;
}
else if (count >= 2)// 多个自付比例
{
var frmZfbl:frmZfblSelect = new frmZfblSelect();
frmZfbl.Bm = yyxmbm;
frmZfbl.Mc = yyxmmc;
frmZfbl.zfblData = zfblData;
frmZfbl.open(true);
frmZfbl.addEventListener(Event.CLOSE, function(event:Event):void {
if (frmZfbl.selectedZfbl != null)
zfbl = Number(frmZfbl.selectedZfbl.split('#v')[0]);
});
}
else
{
var resultString:String = zfbls[0];
var zfblStr:String = resultString.split('#v')[0];
zfbl = Number(zfblStr);
}
// frmZfblSelect 类的实现如下:
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" width="400" height="300">
<mx:Script>
<![CDATA[
import flash.events.Event;
public var Bm:String = "";
public var Mc:String = "";
public var zfblData:Object;
public var selectedZfbl:String;
protected function init():void {
cmb_zfbl.dataProvider = new ArrayCollection();
txtBm.text = Bm;
txtMc.text = Mc;
for (var key:Object in zfblData) {
var item:Object = {label:zfblData[key], data:key};
cmb_zfbl.dataProvider.addItem(item);
}
cmb_zfbl.selectedIndex = 0;
}
protected function btnOk_clickHandler(event:MouseEvent):void {
selectedZfbl = cmb_zfbl.selectedItem.label;
dispatchEvent(new Event(Event.CLOSE));
}
]]>
</mx:Script>
<mx:VBox>
<mx:Label text="选择自付比例"/>
<mx:HBox>
<mx:Label text="项目编码:"/>
<mx:TextInput id="txtBm" editable="false"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="项目名称:"/>
<mx:TextInput id="txtMc" editable="false"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="自付比例:"/>
<mx:ComboBox id="cmb_zfbl"/>
</mx:HBox>
<mx:Button label="确定" click="btnOk_clickHandler(event);"/>
</mx:VBox>
</mx:TitleWindow>
这段代码展示了如何使用 Flex 中的字符串分割和对象数组来实现类似于 C# 中的 Regex.Split 和 Dictionary 类功能。
代码说明:
- **字符串分割:**使用
String.split()方法将zfblRes字符串根据/分割成数组zfbls。 - **字典实现:**使用
Object类型来模拟字典功能,将zfblData定义为一个Object对象。通过使用hasOwnProperty方法判断zfblData中是否存在键值对。 - **
frmZfblSelect类:**使用TitleWindow组件创建弹出窗口,通过ArrayCollection和ComboBox组件实现自付比例选择功能。 - **事件监听:**使用
addEventListener方法监听frmZfblSelect窗口的CLOSE事件,获取选中的自付比例。
注意:
- Flex 中没有类似于 C# 中的
DialogResult类,使用Event.CLOSE事件来代替。 - Flex 中的
ArrayCollection类与 C# 中的BindingSource类功能类似,用于将数据绑定到ComboBox组件。
通过以上代码改造,可以将 C# 代码转换为 Flex 代码,并在 MXML 文件中使用。需要注意的是,Flex 和 C# 语言有很大的差异,需要根据具体情况进行代码转换。
原文地址: https://www.cveoy.top/t/topic/oUt4 著作权归作者所有。请勿转载和采集!