Как преобразовать массив в строку и наоборот? - PullRequest
1 голос
/ 07 февраля 2010

Как преобразовать массив <-> строка?

У меня двумерный массив, и мне нужно сохранить его в базе данных и получить.

Dim myarray(,) as string = {{"some","some"},{"some","some"}}

Ответы [ 2 ]

1 голос
/ 07 февраля 2010

Хотя 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.

0 голосов
/ 07 февраля 2010

Вы можете использовать StringBuilder и выполнять итерацию по массиву, используя некоторый маркер, такой как точка с запятой, чтобы указать пары, и тире, чтобы указать строку в паре, т.е. some-some, и выписать StringBuilder.ToString() т.е. some-some;some-some в базу данных. Затем, когда вы читаете из базы данных строку таким образом и просто перестраиваете массив, используя маркеры, чтобы отделить элементы от самой строки.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...