How to get an input and put it into a scriptable object?

I’m trying to make a game where players input their names and they get random questions. For an example if the player inputs a name “John”, the question will be “John have you ever done bla bla”. So I’m wondering if there’s a way to get the input from 1 script, and then in ScritableObject script, assign that input to a string or when i create the asset of that ScriptableObject be able to decide at what part of the string does the name from an input appear. My question might be confusing, so basically is there a way to use string interpolation in scriptable objects?

Why not simply use string formatting?

[SerializeField]
private string[] questions = new string[]
{
    "Hello {0}!",
    "{0} have you ever done bla bla"
};


// To be set from the input's value
public string Interlocutor { get; set; }

public string GetQuestion(int index)
{
     return string.Format(questions[index], Interlocutor);
}

You may have questions with other inputs, so you’ll need a more custom solution using a simple Replace for instance.

[SerializeField]
private string[] questions = new string[]
{
    "Hello {{interlocutor}}!",
    "{{interlocutor}} have you ever {{action}}",
    "You have {{coins}} coins",
};    

// To be set from the input's value
public string Interlocutor { get; set; }

public string Action { get; set; }

public int Coins { get; set; }

public string GetQuestion(int index)
{
    var sb = new StringBuilder(questions[index]);
    sb.Replace("{{interlocutor}}", Interlocutor);
    sb.Replace("{{action}}", Action);
    sb.Replace("{{coins}}", Coins);
    return sb.ToString();
}