Package Exports
- stringf
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (stringf) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Sringf

Dead simple cross-language string formatter
No dependencies, O(N*m)
Usage
go
import (
"fmt"
"github.com/thanhpk/stringf"
)
func main() {
str := stringf.Format("hi {name}, here is your number {{2108}.", map[string]string{
"name": "Kieu Thanh", // key should not contains spaces
})
fmt.Println(str)
}
// hi Kieu Thanh, here is your number {2108.
js
var stringf = require("stringf")
var str = stringf.Format("hi #name, here is your number {{2108.", {
name: "Thanh",
})
console.log(str)
// hi Kieu Thanh, here is your number {2108.
Test
Go
go test
Js
npm test
Testcase
String | Parameter map | Output |
---|---|---|
hi {name} | name: Thanh |
hi Thanh |
hi {num} | num: 2108 |
hi 2108 |
{{abc} | abc: bcd |
{abc |
Pseudocode to implement in your own language
input:
a string, s
a map string to string, paramMap
output:
a string with param replaced
let ESCCHAR ← '{', ESCCHAREND ← '}', i ← 0, output ← ""
while i < length(s) do
if s[i] = ESCCHAR then
let j ← i + 1
while j <= length(s) and s[j] = ESCCHAR do
j ← j + 1
if (j - i) mod 2 = 0 then
output ← output + ESCCHAR
if (j - i) mod 2 ≠ 0 then
let param ← "" (parse parameter key)
while j < length(s) and s[j] ≠ ESCCHAREND do
param ← param + s[j]
j ← j + 1
if length(param) > 0 then
output ← output + paramMap[param]
if j = length(s) then
return output
else if s[j = ESCCHAREND then
j ← j + 1
i ← j
output ← output + s[i]
i ← i + 1
return output