Наложение строки на строку (ведущие нули/символы)

Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
cJass
Тип:
Наработка
enum (StringOverlayCentering) { SOC_SOURCE_LEFT, SOC_SOURCE_RIGHT, SOC_SOURCE_CENTER }

// Places the overlay string on the source string and returns result string. Centering method specifies position of the remaining symbols.
string StringOverlay(string source, string overlay, StringOverlayCentering centeringMethod) {
    integer slen = StringLength(source)
    integer olen = StringLength(overlay)
    integer delta = olen - slen
    integer gamma = 0
    string result = ""
    if (delta > 0) {
        if (centeringMethod == SOC_SOURCE_RIGHT) {
            return SubString(overlay, 0, delta) + source 
        } elseif (centeringMethod == SOC_SOURCE_LEFT) {
            return source + SubString(overlay, olen - delta, olen)
        } else {
            gamma = delta / 2
            delta = R2I( I2R(delta) / 2  + 0.5 )
            return SubString(overlay, 0, delta) + source + SubString(overlay, olen - gamma, olen)
        }
    }
    return source
}
Тесты/примеры:
BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_LEFT) ) // = "mamaEF"
BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_RIGHT) ) // = "ABmama"
BJDebugMsg( StringOverlay(I2S(285),"00000000", SOC_SOURCE_RIGHT) ) // = "00000285"
BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_CENTER) ) // = "AmamaF"
BJDebugMsg( StringOverlay("mama","ABCDEFG", SOC_SOURCE_CENTER) ) // = "ABmamaG"
BJDebugMsg( StringOverlay("mam","ABCDEFG", SOC_SOURCE_CENTER) ) // = "ABmamFG"
BJDebugMsg( StringOverlay("mam","ABCDEF", SOC_SOURCE_CENTER) ) // = "ABmamF"
BJDebugMsg( StringOverlay("mam","ABCDEFGHIJKLMNOPQRSTUVWXYZ", SOC_SOURCE_CENTER) ) // = "ABCDEFGHIJKLmamPQRSTUVWXYZ"
BJDebugMsg( StringOverlay("mam","ABCD", SOC_SOURCE_CENTER) ) // = "Amam"
BJDebugMsg( StringOverlay("scorpiot","ABCDEF", SOC_SOURCE_CENTER) ) // = "scorpiot"
Более простая версия на Jass
// Places the overlay string on the source string and returns result string
function str_overlay takes string source, string overlay, boolean source_to_the_right returns string
     local integer slen = StringLength(source)
     local integer olen = StringLength(overlay)
     local integer delta = olen - slen
     local string result = ""
     if delta > 0 then
          if source_to_the_right then
               return SubString(overlay, 0, delta) + source 
          else
               return source + SubString(overlay, olen - delta, olen)
          endif
     endif
     return source
endfunction
Тесты/примеры:
BJDebugMsg(str_overlay("mama","ABCDEF", true)) // = "ABmama"
BJDebugMsg(str_overlay("mama","ABCDEF", false)) // = "mamaEF"
BJDebugMsg(str_overlay("scorpiot","ABCDEF", true)) // = "scorpiot"
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
37
12 лет назад
0
Тут спрашивали в академии, буду теперь так отвечать. Чтобы не завалялось в архивах форума =)
0
30
12 лет назад
0
Элементарнее не мог найти вопрос?
0
37
12 лет назад
0
Да пусть будет, потом можно на галакси перегнать всё, там этого нету, а самому лень писать. Вот соберется таких ответов штук 300 - щитай уже как мини фреймворк)
0
29
12 лет назад
0
Сделать можно проще имхо, но с бд по алфавиту.
0
37
12 лет назад
0
Msey, какому алфавиту?)
надо например таблицу сделать вроде (не обязательно точки можно и пробелы)
12......56.......9
64.......5......14
это делается в 2 строки =)
0
15
12 лет назад
0
ScorpioT1000:
Тут спрашивали в академии, буду теперь так отвечать. Чтобы не завалялось в архивах форума =)
Ты только это. Сделай вверху новую группу вроде "Статей" или "Моделей".
Лучше всего со страницей оглавлением, как это сделано для статей.
Чтобы можно было найти быстрее, чем перелопачивать 80 страниц безымянных ресурсов.
Искать что-то в 80 страницах ресурсов себе дороже.
0
37
12 лет назад
Отредактирован ScorpioT1000
0
Не знаю, что ты там где ищешь =) xgm.ru/p/wc3/tag/algorithm это и есть группа называет Алгоритмы, просто она не наверху, а справа
0
17
11 лет назад
0
Очень пригодится для системы диалогов... (...впиливать её просто даже к моему ...ээ проекту) . Так что зачет!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.