【问题标题】:csv in datagrid数据网格中的 csv
【发布时间】:2011-05-03 15:12:53
【问题描述】:
从 mysql 生成包含一组数据的 csv 格式,现在我可以导入 datagrid 以显示每个值,但我有一个问题,哪个值会出现双引号 ("1", "2") 而不是 (1 ,2,3 等),删除双引号(“”)的最佳方法是什么?
"1";"asd@sad.com";"asdasdasd";"1302531993"
"2";"asdasd@asd.com";"werwetewt";"234235"
"3";"asdasd@asd.com";"werwetewt";"234235"
【问题讨论】:
标签:
flash
apache-flex
actionscript
【解决方案1】:
您可以尝试以下方法:
<?xml version="1.0" encoding="utf-8"?>
<s:Application creationComplete="init(event)" xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
protected function init(event:FlexEvent):void
{
var beginningQuotesExp:RegExp = /^\s*"/gm;
var result:String = csvData.replace(beginningQuotesExp, "");
var endingQuotesExp:RegExp = /"\s*$/gm;
result = result.replace(endingQuotesExp, "");
var bodyQuotesExp:RegExp = /"\s*;\s*"/gm;
result = result.replace(bodyQuotesExp, ";");
var splitRegExp:RegExp = /\r*\n+|\n*\r+/gm;
var lines:Array = result.split(splitRegExp);
var dataProvider:ArrayCollection = new ArrayCollection();
for each (var line:String in lines)
{
var lineArray:Array = line.split(";");
var dataObject:Object =
{ counter: lineArray[0], email: lineArray[1], name: lineArray[2], phone: lineArray[3] };
dataProvider.addItem(dataObject);
}
dg.dataProvider = dataProvider;
}
]]>
</fx:Script>
<fx:Declarations>
<fx:String id="csvData">
<![CDATA["1";"asd@sad.com";"asdasdasd";"1302531993"
"2";"asdasd@asd.com";"werwetewt" ; "234235"
"3";"asdasd@asd.com";"werwetewt";"234235"]]>
</fx:String>
</fx:Declarations>
<mx:DataGrid horizontalCenter="0" id="dg" verticalCenter="0">
<mx:columns>
<mx:DataGridColumn dataField="counter" headerText="counter" />
<mx:DataGridColumn dataField="email" headerText="email" />
<mx:DataGridColumn dataField="name" headerText="name" />
<mx:DataGridColumn dataField="phone" headerText="phone" />
</mx:columns>
</mx:DataGrid>
</s:Application>
【解决方案2】:
尝试使用str.replace("\"", "");,其中str 是未修剪的字符串。 AS3 中的String.replace 查找第一个 arg 的所有出现并用第二个 arg 替换它们。如果你愿意,这两个都可以是正则表达式,但在你的情况下,一个简单的转义字符 \" 就可以了。