Как разбить строки по пробелам в DM скрипте - PullRequest
1 голос
/ 21 сентября 2019

Мне нужно прочитать / загрузить серию строк в текстовом файле с помощью сценариев DM, между строками есть пробелы, количество пробелов не фиксировано, может быть 8 пробелов между двумя смежными строками, но 7 пробеловмежду двумя другими смежными строками мне нужно сообщить ДМ, что когда они сталкиваются с пробелом, это новая строка, но если он постоянно встречается с пробелами, он не считает новую строку, пока не встретит непробельные символы.

Любые предложения, которые я оценил.Спасибо,

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Вот пример сценария, который показывает, как анализировать строку, разделенную пробелом:

TagGroup ParseText( string inputString ) {
    // initialize a tag list to store parsing results
    TagGroup tgWordList = NewTagList();
    //
    while( inputString.len() > 0 ) {
        number pos = inputString.find( chr(32) );
        if( pos > 0 ) {         // "space" (i.e. ASC code: 32) is found and it's not the leading character
            string str = inputString.left( pos );
            tgWordList.TagGroupInsertTagAsString( tgWordList.TagGroupCountTags(), str );
            inputString = inputString.right( inputString.len() - pos );
        }
        else if( pos == 0 ) {   // first chracter is "space"
            inputString = inputString.right( inputString.len() - 1 );
            if( inputString == chr(32) ) break;
        }
        else {                  // no "space" found in whole string
            tgWordList.TagGroupInsertTagAsString( tgWordList.TagGroupCountTags(), inputString );            
            break;
        };
    };
    return tgWordList;
};

string test = "how the DM script recognize the spaces between the strings";
TagGroup tg = test.parseText();
tg.TagGroupOpenBrowserWindow(0);

enter image description here

1 голос
/ 22 сентября 2019

Это стандартная обработка строк.Вам нужно создать свой собственный метод для анализа строки, используя доступные команды String, описанные в справке F1 в разделе «Objects: String Object», я думаю, что есть даже пример разбора:

enter image description here

Наиболее вероятные команды:

Number len( String str )
Returns the length of a String.

String left( String str, Number count )
Returns leftmost count characters of a string.

String mid( String str, Number offset, Number count )    
Returns count characters of a string starting at offset.

String right( String str, Number count )    
Returns rightmost count characters of a string.

Number find( String s1, String s2 )    
Returns the index of the first occurrence of the substring 's2' in 's1', or '-1' if there is no such occurrence.

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

...