powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как преобразовать строку "\t" в char '\t'
17 сообщений из 17, страница 1 из 1
Как преобразовать строку "\t" в char '\t'
    #38236782
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо передать в String.Split separator
separator читается из XML файла. Там он указан как \t
C# видит его как "\\t". Есть какая нибудь встроенная функция по преобразованию String "\\t" в Char '\t' ?
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38236810
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dburtsev1C# видит его как "\\t"это дебаггер так видит. на самом деле "\t"


Код: c#
1.
2.
string s = "\t";
char c = s[0];
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237060
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML файл создаётся утилитой bcp (SQL Server)
bcp Database.dbo.table format nul -c -x -f formatfile.xml -T -S"SQLServerName" -t"\t"

в результате получается такая строка
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="12"/>

потом этот файл читается функцией TSQL OPENROWSET BULK FORMATFILE = 'formatfile.xml'
и программой на C# при помощи XmlDocument
string termstr = currNode.ChildNodes[i].Attributes["TERMINATOR"].Value;
char fldTerminator;
if (termstr.Equals("\\t"))
{
fldTerminator = '\t';
}
...
string line;
string[] rowStr = line.Split(fldTerminator);


попробовал char c = termstr[0];
получил '\\'
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237137
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dburtsev1XML файл создаётся утилитой bcp (SQL Server)
bcp Database.dbo.table format nul -c -x -f formatfile.xml -T -S"SQLServerName" -t"\t"А зачем тебе опция -t если уже есть -с?
И вообще, ты уж реши себе толи ты хочешь файл с полями разделенными табом или xml. Это два принципиально разных формата.
Если есть разделитель полей - нету xml-ных скобок вокруг полей. Если есть xml - то не нужны разделители.


dburtsev1в результате получается такая строка
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="12"/>Ну это описание поля, а данные как выглядят?
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237180
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано: приходят текстовые файлы с данными и FORMATFILE к ним. Т.е. как минимум 2 файла.
см. синтаксис функции OPENROWSET

>А зачем тебе опция -t если уже есть -с?

Потому, что для разных типов файлов бывает разный -t

>Ну это описание поля, а данные как выглядят?

данные - текстовый файл с разделителем. Иногда разделитель \t, иногда |
C | проблем нет.
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237311
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу. Кажется въехал.
bcp тут не при чем, MS SQL тоже не при чем. Не путай людей лишней информацией.

Дано: текстовый файл в котором записаны два символа: "\t"
Ты их читаешь как строку и ожидаешь что функция чтения произведет конвертацию этих двух символов в один символ.
Нет, функции чтения файла (и расшифровки xml) не делают такую конвертацию.
Код который ты уже показал:
Код: c#
1.
2.
3.
4.
5.
6.
string termstr = currNode.ChildNodes[i].Attributes["TERMINATOR"].Value;
char fldTerminator;
if (termstr.Equals("\\t"))
{
   fldTerminator = '\t';
}

Правильный и наиболее эффективный.
Как вариант, можно сделать:
Код: c#
1.
string termstr = String.Format(currNode.ChildNodes[i].Attributes["TERMINATOR"].Value);

Это (в принципе) должно спасти от всех символов заданных через \, а не только от \t как в твоем примере.
Но твой ответ будет работать чуть-чуть быстрее чем полноразмерный String.Format.
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237323
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была надежда, что можно как то через GetUnicodeCategory и/или char.IsControl...
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237345
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dburtsev1Была надежда, что можно как то через GetUnicodeCategory и/или char.IsControl...Оставь эту надежду.
\t в xml-файле это строка из двух символов. Это строка а не буква. Это не один символ, это два символа. В файле записано два байта а не один. Два байта не могут быть записаны в char (если это конечно не мульти-байтовая кодировка, но в данном случае это не так). Какими еще словами это сказать чтобы проняло? :)
Чтобы получить в итоге один объект типа сhar, надо взять объект типа string и расшифровать. Процесс расшифровки обязателен, где-то он должен произойти. И если он не встроен в XmlDocument (а ты уже экспериментальным путем увидел что такой расшифровки не происходит), значит надо ее делать вручную поверх XmlDocument и его под-объектов. Самый простой способ это String.Format() или примитивный =="\\t".
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38237352
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owldburtsev1Была надежда, что можно как то через GetUnicodeCategory и/или char.IsControl...Оставь эту надежду.
\t в xml-файле это строка из двух символов. Это строка а не буква. Это не один символ, это два символа. В файле записано два байта а не один...
это не вседа так.
Просто для данного случая встроенной функции преобразования не существует.
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38238878
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dburtsev1\t в xml-файле это строка из двух символов. Это строка а не буква. Это не один символ, это два символа. В файле записано два байта а не один...
это не вседа так. [/quot]Приведи пример когда это не так.
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38239200
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dburtsev1,

запиши в xml а не \t
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38239202
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerdburtsev1,

запиши в xml а не \t

Код: sql
1.
&#008;



парсер съел
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38239359
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerfixxerdburtsev1,

запиши в xml а не \t

Код: sql
1.
&#008;



парсер съел

Код: sql
1.
&#009;



"Поспешишь - людей насмешишь" (с) народная мудрость
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38250917
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Приведи пример когда это не так.[/quot]
bcp database.dbo.table format nul -c -x -f bcpTest.xml -T -S"Server" -t"|"
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38250925
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer,

bcp database.dbo.table format nul -c -x -f bcpTest.xml -T -S"Server" -t" "

получаем в файле:
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&#009;" MAX_LENGTH="12"/>
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38250928
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
bcp IDCRaw.dbo.bcpTest format nul -c -x -f bcpTest.xml -T -S"LANA\PRICE" -t"&#009;"
...
Рейтинг: 0 / 0
Как преобразовать строку "\t" в char '\t'
    #38250930
dburtsev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&amp;#009;" MAX_LENGTH="12"/>
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как преобразовать строку "\t" в char '\t'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]