2010-09-11 3 views
0

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

Вот пример.

Правило в том, что в нем может быть не более 13 символов. В следующей строке есть «S», где должен быть символ моркови.

MASSYBU HILLSMARY 

Это пример строки, которая не достигла предела 13 символов

CYPRUS^TOM 

Как я могу иметь дело со строками, которые достигли предела 13 символов, где нет никакого разделителя, как и в первый пример?

+0

Are эти строки в одной строке или сломанные обратными символами? Я не могу сказать, станет ли «МАССИБУ ХИЛЛЕРЫ» стать «МАССИБУ ХИЛЛ» или «МАССИБУ ХИЛЛ» И «СМАРЬ». –

+0

Ryan, строка должна быть, после того, как она сломана, MASSYBU HILLS MARY. Это город и фамилия человека. – John

ответ

0

Сначала ограничьте строку до 13 символов (используя, например, substr), а затем найдите терминатор. Это то, что вы ищете?

Или, если вы ищете персонажа с помощью indexOf, ограничьте результат до 13. Это действительно зависит от того, как выглядит ваш код.

EDIT: Позвольте мне пояснить это.

$Length = Min(strlen($String), 13); 
if (($TerminatorIndex = strpos($String, "^")) !== FALSE) { 
    $Length = Min($Length, $TerminatorIndex); 
} 

return substr($String, 0, $Length); 
+0

Я планировал использовать substr, а затем посмотреть назад для разделителя. Если он обнаружен, то обращайтесь друг с другом. Есть ли более чистый способ сделать это? – John

+0

Добавлен пример реализации. Вышеописанная реализация также хороша. – EboMike

+0

Спасибо, Эбо. К сожалению, иногда мне нужны вещи, прописанные для меня. :) Я считаю, что все будет хорошо. – John

0

Если вам нужно вырезать лишние символы, которые Вы можете сделать это следующим образом:

$n = 13; 

if(strlen($str) > $n) 
{ 
    //do some alteration example 
    $str = substr($str, 0, $n); 
} 
+0

Эй, Назарий, спасибо за фрагмент кода. Проблема, с которой я сталкиваюсь, заключается в том, что строка будет меняться по длине в зависимости от города, имени и т. Д. Я не уверен, что это приведет меня туда, где мне нужно. В принципе, похоже, мне нужно будет отсчитывать блоки, а затем искать характер моркови. Если символ моркови не найден, мне нужно будет отрезать строку в 13. – John

1

выглядит как работа для регулярных выражений

$str = "whatever^abcabcabcabcxABCABCABCABCXDEF^"; 

preg_match_all('~[^^]{1,13}~', $str, $m); 
var_dump($m[0]); 

выходов

[0]=> string(8) "whatever" 
    [1]=> string(13) "abcabcabcabcx" 
    [2]=> string(13) "ABCABCABCABCX" 
    [3]=> string(3) "DEF" 
+0

Привет, стерефот, спасибо за фрагмент кода. Это выглядит очень многообещающе. Я собираюсь поиграть с этим и посмотреть, смогу ли я что-нибудь заработать. Я вернусь немного. Еще раз спасибо. – John

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