Anirudh Sharma
Anirudh Sharma

Reputation: 727

Add char in between string

I want a function which takes string as an argument and add any char between string after every 3 letters.

For example:

func("11111111"){}

will return:

11,111,111

Upvotes: 1

Views: 4010

Answers (4)

Andrii Turkovskyi
Andrii Turkovskyi

Reputation: 29438

If I understand your question correctly

import 'dart:math' as math;

String convertFun(String src, String divider) {
  String newStr = '';
  int step = 3;
  for (int i = 0; i < src.length; i += step) {
    newStr += src.substring(i, math.min(i + step, src.length));
    if (i + step < src.length) newStr += divider;
  }
  return newStr;
}

UPD: (for separating symbols from end, not from beginning)

String convertFun(String src, String divider) {
  String newStr = '';
  int step = 3;
  for (int i = src.length - 1; i >= 0; i -= step) {
    String subString ='';
    if (i > 3) {
      subString += divider;
    }
    subString += src.substring( i < step ? 0 : i - step, i);
    newStr = subString + newStr;
  }
  return newStr;
}

Upvotes: 2

Blair
Blair

Reputation: 76

The other solutions work for your stated problem, but if you are looking to add commas in numbers (as in your example), you'll want to add the comma's from the right to the left instead. ie: 12345678 you would want 12,345,678 not 123,456,78

String convertFun(String src, String divider) {
    StringBuilder newStr = new StringBuilder();
    int step = 3;
    for (int i = src.length(); i > 0; i -= step) {
        newStr.insert(0, src.substring( i < step ? 0 : i - step, i));
        if (i > 3) {
            newStr.insert(0, divider);
        }
    }
    return newStr.toString();
}

Upvotes: 1

Moujabr
Moujabr

Reputation: 557

Try this:

  String myFunction(String str, String separator) {
    String tempString = "";
    for(int i = 0; i < str.length; i++) {
      if(i % 3 == 0 && i > 0) {
        tempString = tempString + separator;
      }
      tempString = tempString + str[i];
    }
    return tempString;
  }

And use it for example, like this:

Text(myFunction("111111111", ","))

Upvotes: 1

Arthur Khabirov
Arthur Khabirov

Reputation: 146

String func(String str){    
    RegExp exp = RegExp(r".{1,3}");
    Iterable<Match> matches = exp.allMatches(str);

    List<dynamic> list = [];
    matches.forEach((m)=>list.add(m.group(0)));

    return list.join(',');
}

Upvotes: 1

Related Questions