реклама на сайте
подробности

 
 
> Как найти непечатаемый символ в строке?, MatLAB
EUrry
сообщение Sep 6 2009, 08:07
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 218
Регистрация: 14-11-06
Из: Н. Новгород
Пользователь №: 22 312



Собственно нужно в матлабе определить наличие в строке знака перевода строки и пробелы. С пробелами то вроде всё понятно, а как найти остальное? Всю голову уже сломал. По записи '\r' не находит. Пробовал искать функцией findstr.


--------------------
Все не могут только сеять разумное, доброе, вечное: кому-то надо и пахать!
Природа не терпит пустоты: там, где люди не знают правды, они заполняют пробелы домыслом. © Бернард Шоу
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mikeT
сообщение Sep 7 2009, 08:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



Цитата(EUrry @ Sep 6 2009, 15:07) *
Собственно нужно в матлабе определить наличие в строке знака перевода строки и пробелы. С пробелами то вроде всё понятно, а как найти остальное? Всю голову уже сломал. По записи '\r' не находит. Пробовал искать функцией findstr.


С обработкой строк в Матлабе практически не работал, но, насколько я помню, там все это есть.
Я попробовал скидать быстро пример, как совсем тупо и по-простому найти вхождение символа с кодом 13 (в десятичке).

c = 'slon'; - исходная строка
с(3) = 13; - вместо символа 'o' теперь будет символ с кодом 13
a = uint8( с ); - преобразуем символьную строку в байтовую
find(a == 13) - находим позиции (индексы в массиве, первый индекс == 1, а не 0) на которых находятся символы с кодом 13

Но, повторю еще раз, этот подход "на скорую руку".

Еще пример:

c = 'slonick';
c(2) = 13;
c(5) = 11; -- фиг знает что это за символ, но это неважно
с - выведет "покореженную строку"

a = uint8( c );
find(a == 13 | a == 11) - найдет ВСЕ индексы, где встречаются 13 и 11. То есть если у вас строка содержит 20 символов с кодом 13, то find вернет все эти вхождения
а дальше можно все разом заменть - например так:
c(find(a == 13 | a == 11)) = 'f' - заменит все на символ f

Сообщение отредактировал mikeT - Sep 7 2009, 08:55
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016