Как найти символ табуляции

������ ����� � ��������

����, ������� ����� ������ ��������, ����������� � ���� ������ FORworld. ����������� �������� ������ ���� �����.

��� �� �� ������ ������ ����������, ��� ������ ��������� �� ����� ������.

����� ����������� ����������� �� ������ ���� ��������. ��� �������������� � ����� ����������� � ���������, ��� ���, Facebook, LiveJournal

�� �:

Twitter: forworld
������� ��� ������� �������� �������

  • ����� �����������
  • ����� �����
  • ����� Flash-����
  • ��� ��� Adobe Photoshop
  • ����� ���������
  • ��������� ������-����

���������…

����������� �������

SaveAsPDFandXPS
������ (�����): 900

���������� �������� � Excel (�����)
������ (�����): 18000

���������� ������� � Excel (�����)
������ (�����): 14000

��������������
����� � Excel (�����)

������ (�����): 11300

��� �����

���������� ��������������� ������� – cvkyp05r1n1jrdwvefclqwkz6lwx28db – �� 10% ������ ��� ������� GOLD-�������� DepositFiles � �������� �������� 6 ������� ��� 1 ���. ����� ������������ �� 2010-10-19.

� ��� ����� �������

Torhok Italic
����� ����� � ���������� ��������� (hatt)
����� ������ (1315_styles_43)
����� ������ � ����� (Smoke2)
�����
�������� ��� �������� ������� ������ (Ray’s Stained Glass)

���������: TweakNow RegCleaner

������� ������� ��� ����� �������

��� ����� � ��������� ���� ��������� � ������ �����������

����: �����, Word

��� ����� ����� � ��������� ����������� ������, ��������, ���� ���������. ����� �� ���-�� ��� �������?

��, ��������� Microsoft Word ��������� ������ ����������� �������. ��� ����� ���������� ������ ��� ������� ������� �� ������� ����� ��� �� ������� �������� ������� ����� � ��������. � ������� ���� ����������� ��� ��������� ���� ��������.

���� �����������
��������

  • *^p | ^13 – ���� ������.
  • ^��� ����� – ���� ASCII.
  • ^+ – ������� ����.
  • ^^ – ���� ^.
  • ^n | ^14 – ������ �������.
  • *^? – ����� ����.
  • ^$ – ����� �����.
  • *^f | ^2 – ���� ������.
  • *^a | ^5 – ����������.
  • *^u8195 – ������� ������.
  • *^w – ������.
  • ^s – ����������� ������.
  • ***^& – ���������� ���� �����.
  • ^t | ^9 – ���� ���������.
  • ^0��� ����� – ���� ANSI
  • ^= – �������� ����.
  • ^l | ^11 – ������ ������.
  • ^- – ������ �������.
  • *^# – ����� �����.
  • *^U��� ����� – ���� Unicode.
  • *^d – ����
  • *^b – ������ �������.
  • *^u8194 – �������� ������.
  • ^~ – ����������� �����.
  • *^e – ���� �������� ������.
  • ***^c – ���������� ������ ������.
  • ^12 – ������ ������� ��� ��������.
  • ^m – �������������� ������ ��������.
  • **^g – ����������� ��� ����������� ������.
  • *^1 – ����������� ��� ����������� ������.
  • *^19 – ����������� �������� ������.
  • *^21 – ����������� �������� ������.

*�� ���������, ���� ���������� ������ �������������� �����.
**����� ������������ ������ �� ������� ����� ���� ������ �������������� ����� ����������.
***����� ������������ ������ � ���� ��������.

� ����� ��������� ��� �����. ���������� ������ ����� � ��������, ������� ������ ������, ����� ���� �������������� �������������� ������� �����������, ����� ������� ��� �������,
������� ������ �����.

������ ����������� �������� Microsoft Word ��������� ������ ��������������� �����. ��������, �� ������ ����� ������ ���������� �����. ��� ����� � ������� ����� � �������� ���������� ������ �����, ������� ����� �����, ����� ���� ������ ���������� ������ Ctrl+B. ���� �� ��� ��� ������� ���������� ������ Ctrl+B, ����� ����� �������� ����� �� ����������� ������. ������ ������� ���������� ������ Ctrl+B �������� � �������� �� ���������: ����� ���
�����������, ��� � �� ����������� ������.

������ ���������� ������ Ctrl+B ����� ������������ ������ ����������� ���������� ������. ��������, Ctrl+I (����� ����������, ��� �� ���������� ������) ��� Ctrl+U (����� �������������, ��� �� ������������� ������).

��������: http://eso.biz.ua/node/166

�������� � ������ VBA

Cells
����: ��������, Excel
������: ������ ��� ������

���������
�������� ������ � ������� ��������� �������� �����. ���� ���������� �������� Nothing, ���� ��������� �������� ����� ���.

��������: http://eso.biz.ua/node/103

Charts
����: ��������, Excel
������: ������ ��� ������

���������� ����� �������� ������� �����. ���� ���������� �������� Nothing, ���� �� ���� ������� ����� �� �������.

��������: http://eso.biz.ua/node/104

i have string
str=”123 456″;

between 3 and 4 there are spaces and tabs ,how can i decern
the spaces from tabs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ques
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pp();
        }

        private void pp()
        {
            int i,SumTab, SumSpace, len;
            string str;
            char[] characterArray = new char[250];

            str = "123       456";
            SumTab = 0;
            SumSpace = 0;
            len = str.Length;
            str.CopyTo(0, characterArray, 0, len);
            for (i = 0; i < str.Length; i++)
            {
                if (characterArray[i] == ' ') 
                    SumSpace++;
                else if (characterArray[i] == ' ')
                    SumTab++;
                else ;
            }
        }
   }
}


t is tab.

if (characterArray[i] == ' ')
  SumSpace++;
else if (characterArray[i] == 't')
  SumTab++;

You can also use linq:

public int CharCount(char character, string myString)
{
    int count = (from c in myString 
                 where c == character
                 select c).Count();
    return count;
}

And call it like this:

int spaceCount = CharCount(' ', "123 456");
int tabCount   = CharCount('t', "123 456");

You can also do it this way if you don’t like (or can’t use) LINQ:

public int CharCount(char character, string myString)
{
    int count = 0;
    int pos = 0;
    do
    {
        pos = myString.IndexOf(character, pos);
        if (pos >= 0)
        {
            count++;
        }
    } while (pos >= 0);
    return count;
}

If you trying to find the number of spaces and tabs quickly, with no worry for optimization, another way to do is, utilize the exiting method of String.Split[^]

String.Split will return an array of strings with the split strings based on your criteria, then you need to count your array size and your are done.

str = "123       456";
string [] split = str.Split(new Char [] {' '});
spaces = split.Length - 1

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

 
z3f
 
(2004-05-30 17:35)
[0]

Глупый вопрос конечно, но я не могу его решить.=(
Есть текстовый файл с разделителями в строках (символ табуляции). После табуляции стоят числа.
Файл:
1. Опа      232425 руб
2. Ага      7678890 руб

Сумма ?
Нужно выловить числа и сосчитать сумму.
Вопрос простой, ноя не могу вспомнить как определить символ табуляции и наличие пробела (в принципе пробел это st=” “??).
А вот как быть с табуляцией?

С уважением z3f.


 
Gero ©
 
(2004-05-30 17:38)
[1]

#9


 
z3f
 
(2004-05-30 18:37)
[2]

Еще вопрос в принципе по тому же поводу=(

Код:
Repeat
    while not EOLN(f_old) do
     begin
     read (f_old,ch);
     write (f_new,ch);
     stf:=” “;
     if ch=#9 then
         begin
           while ch<>” ” do
           begin
             read(f_old,ch);
             stf:=stf+ch;
           end;
           write (f_new,stf);
           val(stf,m,j);
           setlength (a,i);
           a[i]:=m;
           inc(i);
         end;
    end;
    writeln(f_new);
    readln(f_old);
    Until eof(f_old);
ch – переменная типа char
stf – переменная типа string
по первому проходу по строке(когда находит число) отлично сохранняет в массиве числовое значение.
по второму проходу когда натыкается на число проиходит ошибка в выделенной строке.
Не подскажите в чем проблема?


 
Gero ©
 
(2004-05-30 18:42)
[3]

Ужасный код…
Как объявлены f_old и f_new?
Что вобще этот код должен сделать в процессе работы?


 
z3f
 
(2004-05-30 18:53)
[4]

Код:
procedure TForm2.Button1Click(Sender: TObject);
var f_old, f_new : TextFile; // f_new – test_new.txt, f_old – test.txt
   st,str,stf : string;
   a: array of Integer;
   i,j,m: Integer;
   ch: char;
begin
  if FileExists(“test_new.txt”) then   // если новый файл есть – тады удаляем его
     begin
       AssignFile(f_new,”test_new.txt”);
       Reset(f_new);
       CloseFile(f_new);
       Erase(f_new);
     end;
// создаем новый файл с именем test_new.txt
  AssignFile(f_new,”test_new.txt”);
  AssignFile(f_old,”test.txt”);
  ReSet(f_old);  //только читаем test.txt
  ReWrite(f_new); //пишем в файл test_new.txt
  i:=1;
//обрабатываем исходный файл и результат обработки записываем в новый файл
  Repeat
    while not EOLN(f_old) do
     begin
     read (f_old,ch);
     write (f_new,ch);
     stf:=””;
     if ch=#9 then
         begin
           while ch<>” ” do
           begin
             read(f_old,ch);
             stf:=stf+ch;
           end;
           write (f_new,stf);
           val(stf,m,j);
           setlength (a,i);
           a[i]:=m;
           inc(i);
         end;
    end;
    writeln(f_new);
    readln(f_old);
    Until eof(f_old);
//конец обработки исходного файла
  CloseFile (f_old);
  CloseFile (f_new);
  Form1.Show; // показываем окно с результатами
  Form2.Hide; // прячем окно с исходным текстом
end;

Задача такая – есть текстовый файл вида:
Справка за июль месяц.
Стоимость по одному виду  23434 тыс руб
Стоимость по второму виду  938 тыс руб
Стоимость по третьему виду  23 тыс руб
Сумма  26 тыс руб

Требуется сосчитать сумму нечетных значений.
Упростил на данный момент – просто сосчитать сумму всех значений и соответственно вывести в новый файл (test_new.txt).
Выгребаю все числа из строчек (плевать – даже сумму на первом этапе)и закидываю их в массив (a[i]).
Все нормально по первому проходу.
После него a[1]=23434
stf=23434.
потом stf=””становится.
И когда второй раз программа набредает на число(в данном случае 9) ломается на фразе stf:=stf+ch.

Вот такая проблема.

С уважением z3f.


 
Gero ©
 
(2004-05-30 19:13)
[5]

function GetFileSum(FName : string) : Integer;
var
 S : string;
 i : Integer;
begin
 Result := 0;
 with TStringList.Create do
   try
     LoadFromFile(FName);
     for i := 0 to Count -1 do
       begin
         S := Strings[i];
         S := Copy(S, Pos(#9, S) + 1, Length(S) - Pos(#9, S));
         S := Copy(S, 1, Pos($20, S) - 1);
         Result := Result + StrToIntDef(S, 0);
       end;
   finally
     Free;
   end;
end;

Не проверял..


 
z3f
 
(2004-05-30 19:32)
[6]

[Ошибка] Proba_bank_2.pas(45): Incompatible types
[Ошибка] Proba_bank_2.pas(95): Undeclared identifier: “Count”
[Ошибка] Proba_bank_2.pas(96): Missing operator or semicolon
[Ошибка] Proba_bank_2.pas(16): Unsatisfied forward or external declaration: “TForm2.GetFileSum”
[Фатальная ошибка] Proba_bank_prj.dpr(6): Could not compile used unit “Proba_bank_2.pas”

Это вот такое выдается=)
Проблема в том что нужно каком образом(правльным) добавлять к string переменную типа char. Я по ходу это делаю неправильно! (по моему).

Кроме того нужно выполнять еще массу операций над числами – это не единственное что нужно сделать. Поэтому нужно забивать таким образом массив (просто с ним в итоге будет проще работать!).

Может есть какое-либо другое решение?
Помогите!

С уважением z3f.


 
Gero ©
 
(2004-05-30 19:50)
[7]

Блин, ну что подумать совсем никак?
Или F1 нажать?

var A : array of Integer;

procedure FillArray(FName : string);
var
 S : string;
 i, NumCount : Integer;
begin
 with TStringList.Create do
   try
     LoadFromFile(FName);
     SetLength(A, Count);
     NumCount := 0;
     for i := 0 to Count -1 do
       begin
         S := Strings[i];
         S := Copy(S, Pos(#9, S) + 1, Length(S) – Pos(#9, S));
         S := Copy(S, 1, Pos(” “, S) – 1);
         A[NumCount] := StrToIntDef(S, -1);
         if A[NumCount] > -1 then Inc(NumCount);
       end;
   finally
     Free;
   end;
end;

Код, правда, далеко не идеален, но будет работать.


 
z3f
 
(2004-05-30 20:53)
[8]

Послушался Вашего совета Gero.
Все работает=) Практически=)
Проходит практически весь файл но на очередно readln – дохнет.=(
Тектовый файл:
Справка за июль месяц.

Стоимость по одному виду  23434 тыс руб
Стоимость по второму виду  938 тыс руб
Стоимость по третьему виду  23 тыс руб
Стоимость по четвертому виду  4895 тыс руб
Сумма  26 тыс рубл

Когда доходит до строки Сумма  26 тыс рубл – readln – дохнет=(
Говорит – invalid pointer=(
КОД:

procedure TForm2.Button1Click(Sender: TObject);
var F_OLD, F_NEW : TextFile; // f_new – test_new.txt, f_old – test.txt
   st : string;
   a : array of Integer;
   i : Integer;
begin
  AssignFile(F_NEW,”test_new.txt”);
  AssignFile(F_OLD,”test.txt”);
  ReSet(F_OLD);  //только читаем test.txt
  ReWrite(F_NEW); //пишем в файл test_new.txt
  i:=1;
  Repeat
    Readln(F_OLD, st); //здесь дохнем с ошибкой Invalid Pointer=(
    St := Copy(St,Pos(#9,St)+1,Length(St)-Pos(#9,St));
    St := Copy(St,1,Pos(” “,St)-1);
    SetLength(A, i);
    A[i] := StrToIntDef(St, -1);
    if A[i]>-1 then
     begin
       writeln(F_NEW,a[i]);
       Inc(i);
     end;
  Until eof(F_OLD);
  CloseFile(F_OLD);
  CloseFile(F_NEW);
  Form2.Hide; // прячем окно с исходным текстом
  Form1.Show; // показываем окно с результатами
end;
Помогите еще раз опжалуйста!

С уважением z3f.


 
GEN++ ©
 
(2004-05-30 21:36)
[9]

>z3f  
А что мешает загрузить входной файл в StringList1 далее
обрабатывать каждую строку и результат писать в StringList2,
по окончании операции сохранять StringList2 в файле.


 
Anatoly Podgoretsky ©
 
(2004-05-30 21:45)
[10]

Gero ©   (30.05.04 19:50) [7]
Ну парень ты влетел 🙂


 
z3f
 
(2004-05-30 22:04)
[11]

Да не влетел он=)
Он все правльно написал – я просто не захотел вникнуть в код и разбираться с кодом который написал Gero ©=)
А он все правильно написал=)
Проcто после его кода я внимательно почитал что выдает F1 на каждую из им написанных функций и все понял.
Пришлось немного адаптировать под себя и все – заработало!!!!!

Всем громадное спасибо за помощь!!!

С уважением z3f.


В дополнение к поиску и замене текста Word позволяет искать специальные символы — табуляции, отступы, знаки абзаца и т. Д. — а затем заменять их другими специальными символами. Это может быть удобно для быстрых и простых изменений, которые обычно требуют немного больше времени для внесения вручную.

Когда полезны поиск и замена специальных символов?

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

Допустим, вам нужно отредактировать объемный юридический документ. Вас попросили заменить слово «раздел» на символ раздела. Символ раздела представляет собой пару перекрывающихся символов «S» и часто используется в юридических документах для ссылки на пронумерованный раздел документа. В вашем документе более 50 страниц, и в нем есть множество ссылок на различные разделы. Вы можете легко заменить слово «раздел» на символ раздела с помощью поиска и замены.
Вы только что закончили писать черновик своего первого романа, и он включает в себя множество слов через дефис. Вам необходимо объединить слова, поставленные через дефис, заменив обычный дефис неразрывным дефисом. Вы начинаете заменять символ вручную, но через несколько попыток останавливаетесь. Вы знаете, что должен быть более простой способ. Есть! Просто используйте функцию «Найти и заменить», чтобы сделать всю работу за вас.
Коллега ушел в отставку, а вам поручили отредактировать отчет, над которым коллега работал до своего ухода. Отчет хорошо написан, но непоследовательный интервал между абзацами. После нажатия кнопки «Показать / скрыть» вы обнаружите, что в некоторых случаях вместо одного знака абзаца используются два. Один из способов исправить интервал между абзацами — нажимать клавишу Delete каждый раз, когда вы видите лишний знак абзаца. Но есть более быстрый способ — просто найдите каждое вхождение двух знаков абзаца и замените его одним знаком абзаца.

Слишком много специальных символов, чтобы подробно описать их все, но давайте рассмотрим несколько общих примеров того, как работает поиск и замена этих символов.

Пример первый: замена текста специальным символом

Допустим, ваш документ выглядит примерно так:

Документ Word, где слово

Примечание. Если вы не видите специальные символы в документе, вы можете включить их, нажав кнопку «Показать / скрыть» на ленте. Его значок выглядит как символ абзаца.

Вам необходимо заменить каждое вхождение слова «Раздел» символом раздела. Перейдите на вкладку «Главная» на ленте Word и нажмите «Заменить». Или вы можете нажать Ctrl + H.

нажмите кнопку замены

Введите слово «Раздел» в поле «Найти», а затем нажмите кнопку «Еще >>», чтобы развернуть параметры поиска и замены.

тип

Щелкните поле «Заменить на», чтобы поместить туда точку вставки, а затем нажмите кнопку «Специальный».

щелкните поле заменить на, а затем нажмите специальную кнопку

В раскрывающемся списке выберите «Символ раздела».

выберите символ раздела из меню

Обратите внимание, что поле «Заменить на» теперь содержит текст «^%» — это код Word для этого символа раздела. Нажмите кнопку «Заменить все». В этом примере было произведено 16 замен. Нажмите кнопку «ОК» и закройте окно «Найти и заменить».

нажмите заменить все

Все вхождения слова «Раздел» теперь заменены символом раздела.

текстовый документ, показывающий символы раздела

Пример второй: замена обычного дефиса неразрывным дефисом

В следующем примере обратите внимание, что в нашем примере абзаца довольно много слов с переносом, включая три случая, когда слова с переносом разделены на разных строках. Давайте заменим все обычные дефисы неразрывными, чтобы этого не произошло.

текстовый документ с дефисами

На вкладке «Главная» нажмите «Заменить» или просто нажмите Ctrl + H.

нажмите кнопку замены

В поле «Найти» удалите любой существующий текст или символы, а затем введите один символ дефиса. При необходимости нажмите кнопку «Еще >>», чтобы развернуть параметры «Найти» и «Заменить».

введите одинарный дефис в поле найти

Щелкните поле «Заменить на», чтобы поместить туда точку вставки. Удалите любой существующий текст или символы, а затем нажмите кнопку «Специальные».

щелкните поле заменить на, а затем щелкните специальный

В раскрывающемся списке выберите «Неразрывный дефис».

выберите неразрывный дефис в меню

Обратите внимание, что код Word для неразрывного дефиса — «^ ~» — теперь добавлен в поле «Заменить на». Нажмите кнопку «Заменить все». В этом примере было произведено 11 замен. Нажмите кнопку «ОК» и закройте окно «Найти и заменить».

нажмите заменить все

Word заменил все дефисы неразрывными дефисами. Обратите внимание, что слова через дефис на правом поле больше не разделены.

документ Word, показывающий только неразрывные дефекты

Пример третий: замена двух знаков абзаца на один знак абзаца

В этом примере мы хотим заменить любые двойные знаки абзаца одним знаком абзаца, удалив лишний интервал между абзацами.

текстовый документ с дополнительными знаками абзаца между абзацами

На вкладке «Главная» нажмите кнопку «Заменить». Или вы можете нажать Ctrl + H.

нажмите кнопку замены

Щелкните поле «Найти» и удалите любой существующий текст или символы. Нажмите кнопку «Дополнительно >>», чтобы открыть дополнительные параметры, нажмите кнопку «Особые», а затем выберите параметр «Отметка абзаца» в раскрывающемся списке.

выберите знак абзаца из специального меню

Обратите внимание, что код Word для знака абзаца («^ v») был вставлен в поле «Найти». Нажмите кнопку «Специальный» еще раз, а затем снова нажмите «Метка абзаца» в раскрывающемся списке, чтобы разместить там второй знак абзаца. (Обратите внимание, что вы также можете просто ввести «^ v ^ v» в поле, если вы уже знакомы с кодами.)

снова выберите знак абзаца из специального меню

Теперь в поле «Найти» есть два знака абзаца. Щелкните поле «Заменить на», удалите любой существующий текст или символы, а затем нажмите кнопку «Специальные». В раскрывающемся меню выберите «Знак абзаца».

щелкните поле заменить на, а затем используйте специальное меню, чтобы вставить туда один знак абзаца

На последнем шаге нажмите кнопку «Заменить все». В этом примере Word произвел восемь замен. Нажмите кнопку «ОК» и закройте окно «Найти и заменить».

нажмите заменить все

Все вхождения двух знаков абзаца заменены одним знаком абзаца.

документ Word, в котором удалены лишние знаки абзаца

Как видите, использование функции «Найти и заменить» может сэкономить много времени при замене специальных символов в документах. И мы здесь лишь коснулись поверхности. В этом меню вас ждут и другие специальные символы.

LemanRass

0 / 0 / 0

Регистрация: 15.04.2013

Сообщений: 8

1

Как проверить строку на наличие табуляций?

09.10.2013, 22:00. Показов 6532. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Собственно, как проверить char строку на наличие табуляции?
Пробовал так, не вышло, в принципе логично почему, но увы, когда кончаются умные идеи, начинаешь пробовать уже любые.

C++
1
2
3
4
5
6
7
char str[80];
cin>>str;
for(int i = 0; i < 80; i++)
{
    if(str[i] == 't')
        cout<<"Есть <<i<< табуляций!";
}



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.10.2013, 22:00

Ответы с готовыми решениями:

Как посимвольно проверить строку, взятую из файла, на наличие определенных символов?
Нужно взять строку из текстового файла и посчитать знаки препинания в каждом предложении, не могу…

Как проверить строку на наличие не цифр
Нужно получить из модема USSD ответ про номер своего телефона. К сожалению, не всегда получается…

Как проверить строку Char на наличие цифр?
Как проверить строку Char на наличие цифр в си?

если, например, проверка на то начинается строка…

Как проверить строку на наличие определенных символов?
Здравствуйте!

Вот у меня, напр., есть текст, и строка из некоторых символов.
Мне надо узнать,…

8

BumerangSP

4299 / 1421 / 463

Регистрация: 16.12.2010

Сообщений: 2,939

Записей в блоге: 3

09.10.2013, 23:14

2

C++
1
cin.getline(str, 80);

вместо

C++
1
cin >> str;



0



gazlan

3174 / 1933 / 312

Регистрация: 27.08.2010

Сообщений: 5,131

Записей в блоге: 1

09.10.2013, 23:42

3

C++
1
2
3
char*    pTab = strchr(String,'t');
 
printf("%sn",pTab  ?  "Tabbed"  :  "Is NOT tabbed");



0



0 / 0 / 0

Регистрация: 15.04.2013

Сообщений: 8

10.10.2013, 10:08

 [ТС]

4

А если мне нужно узнать какой именно символ в строке табуляция что бы потом программно заменить его на пробел?



0



gazlan

3174 / 1933 / 312

Регистрация: 27.08.2010

Сообщений: 5,131

Записей в блоге: 1

10.10.2013, 10:40

5

Цитата
Сообщение от LemanRass
Посмотреть сообщение

какой именно символ

C++
1
return pTab  ?  String - pTab  :  -1;

Добавлено через 1 минуту

Цитата
Сообщение от LemanRass
Посмотреть сообщение

программно заменить его на пробел

Не дочитал 🙂

C++
1
2
3
4
if (pTab)
{
   *pTab = 0x20;
}



0



LemanRass

0 / 0 / 0

Регистрация: 15.04.2013

Сообщений: 8

10.10.2013, 18:31

 [ТС]

6

Такая проверка проверяет строку есть ли там табуляция или нет, но не дает возможности не трогая остальной текст в строке определить где табуляция и просто заменить именно ее а не всю строку в которой есть табуляция.
Вот собственно то что пока написал я.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#define COUNT 3
 
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Rus");
    int match = 0;
    char str[COUNT][128];
    string s[COUNT];
 
    for(int i=0; i<COUNT; i++)
        getline(cin,s[i]);
 
    printf("nОтформатировано!n");
    for(int i = 0; i < COUNT; i++)
    {
        if(!s[i].empty())
        {
            strcpy(str[i],s[i].c_str());
            for(int j = 0; j < strlen(str[i]); j++)
            {
                if(str[i][j] == ' ' || strchr(str[i],'t'))
                {
                    match++;
                    continue;
                }
                else 
                    {
                        if(match > 1)
                            cout<<" "<<str[i][j];
                        else
                            cout<<str[i][j];
                    }
                match = 0;
            }
            printf("n");
        }
    }
}

Суть программы: В каждой строке что вводится с клавиатуры заменять кучу пробелов и табуляций на 1 пробел, и удалять пустые строки.
Извините что код не оптимизирован, я обычно оптимизирую его после того как он начинает правильно работать.



0



3174 / 1933 / 312

Регистрация: 27.08.2010

Сообщений: 5,131

Записей в блоге: 1

10.10.2013, 19:05

7

Цитата
Сообщение от LemanRass
Посмотреть сообщение

не трогая остальной текст в строке определить где табуляция и просто заменить именно ее

Именно это и делается. In place. Без всяких ужасов с STL и копированием.



0



LemanRass

0 / 0 / 0

Регистрация: 15.04.2013

Сообщений: 8

12.10.2013, 00:17

 [ТС]

8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Решил проблему вообщем так: 
if(arr[i][j] == 't')
{
  match++;
  continue;
}
else
{
  if(match > 0)
    printf(" ");
  else
    printf("%c",arr[i][j]);
}



0



3174 / 1933 / 312

Регистрация: 27.08.2010

Сообщений: 5,131

Записей в блоге: 1

12.10.2013, 00:37

9

Цитата
Сообщение от LemanRass
Посмотреть сообщение

в общем, так:

Потерял нить… Что именно вам требуется? Подсчет, знание позиции, удаление, замена, еще что-то?

И как двумерный массив arr[i][j] связан с проверить char строку на наличие табуляции?



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

12.10.2013, 00:37

Помогаю со студенческими работами здесь

Как проверить строку с числами на наличие слов или букв?
Здравствуйте. Допустим, дана строка &quot;1,2,4,Ф&quot;. Нужно сделать исключение что если в строке есть…

Проверить строку на наличие слов
Здравствуйте!
Дан массив слов и строка текста. Проверить строку на наличие слов, не входящих в…

Проверить строку на наличие чисел (0-9)
вроде все правильно пишу, до этого с VAL пробовал, ничего не помогает :help:
var s,w:string;…

Проверить строку на наличие похожести
Пример 1:
Есть IP: XXX.XX.XXX.X
Если есть другой IP, 111.11.111.1, то выполнится действие некое….

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

Добавить комментарий