【发布时间】:2010-02-07 17:09:15
【问题描述】:
如何转换数组字符串?
我有一个二维数组,我需要保存到数据库并检索。
Dim myarray(,) as string = {{"some","some"},{"some","some"}}
【问题讨论】:
-
您是否致力于使用数组?如果您使用像
List(Of List(Of String))这样的通用集合,可能还有更多可用选项。
如何转换数组字符串?
我有一个二维数组,我需要保存到数据库并检索。
Dim myarray(,) as string = {{"some","some"},{"some","some"}}
【问题讨论】:
List(Of List(Of String)) 这样的通用集合,可能还有更多可用选项。
虽然XmlSerializer不能序列化多维数组(String(,)),但它可以序列化锯齿状数组(String()())。因此,如果您愿意使用“字符串数组”而不是“二维字符串数组”,则可以使用 XmlSerializer。
如何序列化的示例(导入System.Xml.Serialization 和System.IO):
Dim myarray()() As String = { _
New String() {"some", "some"}, _
New String() {"some", "some"}}
Dim s As New XmlSerializer(GetType(String()()))
Dim stream As New StringWriter()
s.Serialize(stream, myarray)
Dim myString = stream.ToString()
myString 然后包含:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ArrayOfString>
<string>some</string>
<string>some</string>
</ArrayOfString>
<ArrayOfString>
<string>some</string>
<string>some</string>
</ArrayOfString>
</ArrayOfArrayOfString>
同样,要反序列化,您可以使用s.Deserialize。
【讨论】:
您可以使用 StringBuilder 并使用某种标记遍历数组,例如用分号表示配对,用破折号表示配对中的字符串,即some-some,然后写出@ 987654322@ 即some-some;some-some 到数据库。然后,当您以这种方式从数据库中读取一个字符串时,只需使用标记将元素与字符串本身分开来重新构建数组。
希望这会有所帮助, 最好的祝福, 汤姆。
【讨论】: