Replace {x} tokens in strings in C#

By FoxLearn 1/10/2025 2:48:06 AM   80
When working with URLs that contain placeholders (also known as tokens), you may need to dynamically replace those placeholders with actual values at runtime.

This is a common scenario when constructing URLs for API requests, where certain parts of the URL need to be customized based on specific parameters.

For instance, imagine you have a template URL like this:

http://api.example.com/sale?auth_user=xxxxx&auth_pass=xxxxx&networkid={networkid}&category=b2c&country=IT&pageid={pageid}&programid=133&saleid=1&m={master}&optinfo={optinfo}&publisher={publisher}&msisdn={userId}

In this example, placeholders such as {networkid}, {pageid}, and {userId} need to be replaced with actual values before the URL is used. Below is a simple approach in C# to perform this replacement using a Dictionary and the String.Replace method.

First, define a Dictionary<string, string> to hold the token-value pairs. The keys in the dictionary will correspond to the tokens in the URL, and the values will be the actual values you want to insert into the URL.

Create a Dictionary for Token Replacement

var values = new Dictionary<string, string> {
    { "{networkid}", "WHEEE!!" },
    { "{pageid}", "42" },
    { "{master}", "masterValue" },
    { "{optinfo}", "optInfoDetails" },
    { "{publisher}", "publisherName" },
    { "{userId}", "123456789" }
};

Prepare the Template URL

Define the URL template that contains the tokens. These tokens are enclosed in curly braces, and you want to replace them with actual values.

var url = "http://api.example.com/sale?auth_user=xxxxx&auth_pass=xxxxx&networkid={networkid}&category=b2c&country=IT&pageid={pageid}&programid=133&saleid=1&m={master}&optinfo={optinfo}&publisher={publisher}&msisdn={userId}";

Replace Tokens Using a foreach Loop

Loop through the dictionary and replace each token in the URL string with its corresponding value.

foreach (var key in values.Keys) {
    url = url.Replace(key, values[key]);
}

After this loop runs, the url string will have all the placeholders replaced with the actual values from the dictionary.

Once the replacements are made, the final URL will be fully populated with the specific values.

For example, after replacing all the tokens, the URL might look something like this:

http://api.example.com/sale?auth_user=xxxxx&auth_pass=xxxxx&networkid=WHEEE!!&category=b2c&country=IT&pageid=42&programid=133&saleid=1&m=masterValue&optinfo=optInfoDetails&publisher=publisherName&msisdn=123456789

Full Example Code

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Define the dictionary with token-value pairs
        var values = new Dictionary<string, string> {
            { "{networkid}", "WHEEE!!" },
            { "{pageid}", "42" },
            { "{master}", "masterValue" },
            { "{optinfo}", "optInfoDetails" },
            { "{publisher}", "publisherName" },
            { "{userId}", "123456789" }
        };

        // URL template with placeholders
        var url = "http://api.example.com/sale?auth_user=xxxxx&auth_pass=xxxxx&networkid={networkid}&category=b2c&country=IT&pageid={pageid}&programid=133&saleid=1&m={master}&optinfo={optinfo}&publisher={publisher}&msisdn={userId}";

        // Replace tokens in the URL
        foreach (var key in values.Keys) {
            url = url.Replace(key, values[key]);
        }

        // Output the final URL
        Console.WriteLine(url);
    }
}

By using a Dictionary to map tokens to their respective values and iterating through the dictionary with a foreach loop, you can easily replace placeholders in a URL string in C#. This approach ensures that your URLs are dynamically constructed with the appropriate values, making it a powerful tool for API integration and URL manipulation in general.