2015-08-28 2 views
1

Я использую VBA в среде доступа Ms, чтобы обрабатывать длинную строку (поле memo, в котором первоначально хранится HTML). После позиционирования с помощью Instr() я положил позицию в Mid (vStr, vStartPos, vEndPos-vStartPos + 1), чтобы извлечь строку, но результат не соответствует. Я уже тщательно проверил это в непосредственных окнах, а также в NotePad ++. Я могу сказать, что Instr() и NotePad ++ дали тот же результат подсчета, в то время как Mid() отличается. В некоторых случаях результат Mid() ранее, чем Instr(), является последним в других случаях. Я не знаю причины, и могу просто поверить, что Mid() использует другой механизм или имеет поразительный (удивленный!) При обработке длинной строки, смешанной с однобайтовыми и двубайтовыми символами (но это распространено в мире и встречается без проблем) и, возможно, некоторые специальные символы.Середина() не извлекает строку в точной позиции

Я считаю, что мне нужно настроить Mid(). Любая идея, как сделать это эффективно и эффективно?

+0

Можете ли вы поделиться примером? –

+0

Я читаю его несколько раз, я все еще не могу понять * «Результат Mid() в некоторых случаях бывают раньше, чем Instr(), а последний в других случаях.» * - уход за [edit] и немного перефразировать? –

+2

Возможно использование 'MidB' –

ответ

0

Спасибо всем за ваш ответ. После того, как я создал пользовательский Mid() от RegEx и обнаружил, что проблема не изменилась, я обнаружил ту глупую ошибку, которую я сделал. У Instr() и Mid() нет проблем, но строка была небрежно изменена между ними. Поэтому этот случай должен быть закрыт.

Смежные вопросы