2013-04-13 2 views
0

Кто-нибудь знает, как сделать функцию в Libreoffice базовым как str_ireplace в PHP?
Я хочу использовать в своей функции ячейки.PHP str_ireplace в libreoffice basic

str_ireplace(search - range of cells, replace - range of cells, text) 

или, по крайней мере, str_replace

ответ

1

Я сделал очень простую функцию

Function Str_ireplace(Search As Variant, Replace As Variant, Source As String) 

    Dim Result As String 
    Dim StartPos As Long 
    Dim CurrentPos As Long 
    Dim CurrentSearch As String 
    Dim CurrentReplace As String 

    Result = "" 

    For Row = Lbound(Search, 1) To Ubound(Search, 1) 
    For Col = LBound(Search, 2) To UBound(Search, 2) 
     StartPos = 1 
     CurrentPos = 1 
     CurrentSearch = Search(Row, Col) 
     CurrentReplace = Replace(Row, Col) 
     Result = "" 


     Do While CurrentPos <> 0 
      CurrentPos = InStr(StartPos, Source, CurrentSearch) 
      If CurrentPos <> 0 Then 
       Result = Result + Mid(Source, StartPos, _ 
       CurrentPos - StartPos) 
       Result = Result + CurrentReplace 
       StartPos = CurrentPos + Len(CurrentSearch) 
      Else 
       Result = Result + Mid(Source, StartPos, Len(Source)) 
      End If    ' Position <> 0 
     Loop 
     Source = Result 
    Next 
    Next 


    Str_ireplace = Result  
End Function 

Я использовал это в качестве примера: http://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Strings_(Runtime_Library)

0

попробовать этот

Синтаксис

Replace ("Текст"; положение; длина; "NewText")

Текст относится к тексту из которых часть будет заменена.

Позиция относится к позиции в тексте, где начинается замена.

Длина - количество символов в тексте, подлежащих замене.

NewText ссылается на текст, который заменяет текст.

Пример

=REPLACE("1234567";1;1;"444") returns "444234567". One character at position 1 is replaced by the complete NewText. 

https://help.libreoffice.org/Calc/Text_Functions#Example_13

или

ПОДСТАВИТЬ ("Текст", "SearchText"; "NewText"; Встречаемость)

Пример

= ЗАМЕСТИТЕЛЬ ("123123123"; "3"; "abc") возвращает 12abc12abc12abc.

= ЗАМЕСТИТЕЛЬ ("123123123"; "3"; "abc"; 2) возвращает 12312abc123.

https://help.libreoffice.org/Calc/Text_Functions#SUBSTITUTE

+0

вы не можете использовать массив поиска и замены массива значений с этим подходом. – StanleyD