No, it doesn't seem to work. See example - the function won't edit the string:
Code:
DIM a$ AS String
FUNCTION editStringFN(ByREF stringToEdit$ AS String, pos AS Integer, newLetter$ AS String) AS String
stringToEdit$(pos)=newLetter$
PRINT AT 10,0; stringToEdit$
RETURN stringToEdit$
END FUNCTION
CLS
a$="sample"
PRINT a$; "- original string"
'try to edit string via the function
a$=editStringFN(a$, 1, "i")
PRINT AT 1,0;a$; "- function fails to edit"
'same edit without using the function
a$(1)="i"
PRINT a$; "- works as regular code"