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.SplitDictionary 类功能。

代码说明:

  1. **字符串分割:**使用 String.split() 方法将 zfblRes 字符串根据 / 分割成数组 zfbls
  2. **字典实现:**使用 Object 类型来模拟字典功能,将 zfblData 定义为一个 Object 对象。通过使用 hasOwnProperty 方法判断 zfblData 中是否存在键值对。
  3. **frmZfblSelect 类:**使用 TitleWindow 组件创建弹出窗口,通过 ArrayCollectionComboBox 组件实现自付比例选择功能。
  4. **事件监听:**使用 addEventListener 方法监听 frmZfblSelect 窗口的 CLOSE 事件,获取选中的自付比例。

注意:

  • Flex 中没有类似于 C# 中的 DialogResult 类,使用 Event.CLOSE 事件来代替。
  • Flex 中的 ArrayCollection 类与 C# 中的 BindingSource 类功能类似,用于将数据绑定到 ComboBox 组件。

通过以上代码改造,可以将 C# 代码转换为 Flex 代码,并在 MXML 文件中使用。需要注意的是,Flex 和 C# 语言有很大的差异,需要根据具体情况进行代码转换。

C# 代码转换为 Flex 代码:实现字符串分割和字典功能

原文地址: https://www.cveoy.top/t/topic/oUt4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录