Вопрос по Excel

Discussion in 'PHP' started by BlackSilver, 10 Jul 2009.

  1. BlackSilver

    BlackSilver New Member

    Joined:
    30 Jan 2009
    Messages:
    28
    Likes Received:
    4
    Reputations:
    0
    Я настолько обыдлился, что генерирую исходник в Excel.
    И столкнулся с такой проблемой: в одной ячейке есть строка типа IdTypeFactor. Нужно её программно преобразовать до строки id_type_factor. То есть самое сложное - перед каждой заглавной буквой ставить подчерк. Или наоборот, после каждого подчерка букву делать заглавной.
    Есть идеи?
     
  2. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    1) Проверять коды символов, если относится к диапазону заглавных - то разделять подчёркиванием
    2) Брать каждый символ, и принудительно делать его заглавным, и сравнивать с оригиналом, типа
    VB : If char = UCase(char) Then ... Else ... End Id
    PHP : if (char == strtoupper(char)) {} else {}
    3) Юзать регулярку типа [A-ZА-Я]
    a) С модом возврата смещения и по массиву смещений вхождений получаем позицию каждого заглавного символа и воротим что хотим
    б) Заменять символ нижний регистр + подчёркивание
     
    #2 FireFenix, 10 Jul 2009
    Last edited: 10 Jul 2009
  3. m0nsieur

    m0nsieur Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    del...недопонял ТС
     
  4. BlackSilver

    BlackSilver New Member

    Joined:
    30 Jan 2009
    Messages:
    28
    Likes Received:
    4
    Reputations:
    0
    под конец вышло такое
    Code:
    Function ToField(str) As String
        Dim res As String
        Dim subs As String
        For i = 0 To Len(str) - 1
            subs = str.Substring(i, 1)
            If subs = UCase(subs) Then res = res + "_"
            res = res + subs
        Next i
        ToField = res
    End Function
    
    Удаление подчерка в начале и опускание букв уже в ячейке сделаю.
    Вот только как теперь заставить таблицу пользоваться этой функцией. Не видит...
     
  5. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Что значит не видит?
    Когда ты запускаешь функцию?
     
  6. BlackSilver

    BlackSilver New Member

    Joined:
    30 Jan 2009
    Messages:
    28
    Likes Received:
    4
    Reputations:
    0
    Когда пишу в ячейке =ToField(A2)
     
  7. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    А чё оно должно собсно работать?
    ToField функция не экзеля, а VBA
    Приделая на событие к ячейки или добавь ещё контролы, которые по нажатию/изменению/etc будут вызывать функцию