Jump to page: 1 2
Thread overview
Insert a char in string
Jul 10, 2014
Alexandre
Jul 10, 2014
Alexandre
Jul 10, 2014
Marc Schütz
Jul 10, 2014
Alexandre
Jul 10, 2014
John Colvin
Jul 10, 2014
Alexandre
Jul 10, 2014
simendsjo
Jul 10, 2014
Alexandre
Jul 10, 2014
simendsjo
Jul 12, 2014
JR
Jul 13, 2014
Ali Çehreli
July 10, 2014
I have a string X and I need to insert a char in that string...

auto X = "100000000000000";

And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...

I try this:
auto X = "100000000000000";
auto N = X.insertInPlace(1,'0');
July 10, 2014
Sorry..
I mean:

auto X = "100000000000000";
auto N = X.insertInPlace(3,',');

On Thursday, 10 July 2014 at 16:05:51 UTC, Alexandre wrote:
> I have a string X and I need to insert a char in that string...
>
> auto X = "100000000000000";
>
> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>
> I try this:
> auto X = "100000000000000";
> auto N = X.insertInPlace(1,'0');

July 10, 2014
On Thursday, 10 July 2014 at 16:05:51 UTC, Alexandre wrote:
> I have a string X and I need to insert a char in that string...
>
> auto X = "100000000000000";
>
> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>
> I try this:
> auto X = "100000000000000";
> auto N = X.insertInPlace(1,'0');

insertInPlace works like this:

auto X = "100000000000000";
auto X1 = X;
X.insertInPlace(3, ',');
assert(X == "100,000000000000");
assert(X1 == "100000000000000");


You can also do this:

auto X = "100000000000000";
auto N = X[0 .. 3] ~ ',' ~ X[3 .. $];
assert(X == "100000000000000");
assert(N == "100,000000000000");
July 10, 2014
I used that solution:

string InsertComma(string val)
{
	return val[0 .. $-2] ~ "," ~ val[$-2 .. $];
}

On Thursday, 10 July 2014 at 16:23:44 UTC, John Colvin wrote:
> On Thursday, 10 July 2014 at 16:05:51 UTC, Alexandre wrote:
>> I have a string X and I need to insert a char in that string...
>>
>> auto X = "100000000000000";
>>
>> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>>
>> I try this:
>> auto X = "100000000000000";
>> auto N = X.insertInPlace(1,'0');
>
> insertInPlace works like this:
>
> auto X = "100000000000000";
> auto X1 = X;
> X.insertInPlace(3, ',');
> assert(X == "100,000000000000");
> assert(X1 == "100000000000000");
>
>
> You can also do this:
>
> auto X = "100000000000000";
> auto N = X[0 .. 3] ~ ',' ~ X[3 .. $];
> assert(X == "100000000000000");
> assert(N == "100,000000000000");

July 10, 2014
On Thursday, 10 July 2014 at 16:20:29 UTC, Alexandre wrote:
> Sorry..
> I mean:
>
> auto X = "100000000000000";
> auto N = X.insertInPlace(3,',');
>
> On Thursday, 10 July 2014 at 16:05:51 UTC, Alexandre wrote:
>> I have a string X and I need to insert a char in that string...
>>
>> auto X = "100000000000000";
>>
>> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>>
>> I try this:
>> auto X = "100000000000000";
>> auto N = X.insertInPlace(1,'0');

`std.array.insertInPlace` doesn't return anything. "In place" here means "in situ", i.e. it will not create a new string, but insert the new elements into the existing one. This operation may still reallocate, in which case the array slice you're passing in will be updated to point to the new memory.

Either use this instead:

    auto x = "100000000000000";
    auto n = x.dup;
    n.insertInPlace(3, ',');
    // or: insertInPlace(n, 3, ',');

... or use slicing and concatenating to construct a new string:

    auto g = x[0 .. 3] ~ ',' ~ x[3 .. $];

(Side note about style: It's common practice to use lower-case names for variables, upper-case first letters are used to denote types. But of course, that's a matter of taste.)
July 10, 2014
Oh, I used that letters in upper case, just for a simple sample...

On Thursday, 10 July 2014 at 16:32:53 UTC, Marc Schütz wrote:
> On Thursday, 10 July 2014 at 16:20:29 UTC, Alexandre wrote:
>> Sorry..
>> I mean:
>>
>> auto X = "100000000000000";
>> auto N = X.insertInPlace(3,',');
>>
>> On Thursday, 10 July 2014 at 16:05:51 UTC, Alexandre wrote:
>>> I have a string X and I need to insert a char in that string...
>>>
>>> auto X = "100000000000000";
>>>
>>> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>>>
>>> I try this:
>>> auto X = "100000000000000";
>>> auto N = X.insertInPlace(1,'0');
>
> `std.array.insertInPlace` doesn't return anything. "In place" here means "in situ", i.e. it will not create a new string, but insert the new elements into the existing one. This operation may still reallocate, in which case the array slice you're passing in will be updated to point to the new memory.
>
> Either use this instead:
>
>     auto x = "100000000000000";
>     auto n = x.dup;
>     n.insertInPlace(3, ',');
>     // or: insertInPlace(n, 3, ',');
>
> ... or use slicing and concatenating to construct a new string:
>
>     auto g = x[0 .. 3] ~ ',' ~ x[3 .. $];
>
> (Side note about style: It's common practice to use lower-case names for variables, upper-case first letters are used to denote types. But of course, that's a matter of taste.)

July 10, 2014
On 07/10/2014 06:05 PM, Alexandre wrote:
> I have a string X and I need to insert a char in that string...
> 
> auto X = "100000000000000";
> 
> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
> 
> I try this:
> auto X = "100000000000000";
> auto N = X.insertInPlace(1,'0');

Do you really want to insert a comma in the string, or do you want to format a number as "100,000,000,000.00"?
July 10, 2014
basically format....
I read a cobol struct file...

From pos X to Y I have a money value... but, this value don't have any format..

000000000041415

The 15 is the cents... bascally I need to put the ( comma ), we use comma to separate the cents, here in Brazil...

On Thursday, 10 July 2014 at 19:33:15 UTC, simendsjo wrote:
> On 07/10/2014 06:05 PM, Alexandre wrote:
>> I have a string X and I need to insert a char in that string...
>> 
>> auto X = "100000000000000";
>> 
>> And I need to inser a ',' in position 3 of this string..., I try to use
>> the array.insertInPlace, but, not work...
>> 
>> I try this:
>> auto X = "100000000000000";
>> auto N = X.insertInPlace(1,'0');
>
> Do you really want to insert a comma in the string, or do you want to
> format a number as "100,000,000,000.00"?

July 10, 2014
On 07/10/2014 09:58 PM, Alexandre wrote:
> basically format....
> I read a cobol struct file...
> 
> From pos X to Y I have a money value... but, this value don't have any format..
> 
> 000000000041415
> 
> The 15 is the cents... bascally I need to put the ( comma ), we use comma to separate the cents, here in Brazil...
> 
> On Thursday, 10 July 2014 at 19:33:15 UTC, simendsjo wrote:
>> On 07/10/2014 06:05 PM, Alexandre wrote:
>>> I have a string X and I need to insert a char in that string...
>>>
>>> auto X = "100000000000000";
>>>
>>> And I need to inser a ',' in position 3 of this string..., I try to use the array.insertInPlace, but, not work...
>>>
>>> I try this:
>>> auto X = "100000000000000";
>>> auto N = X.insertInPlace(1,'0');
>>
>> Do you really want to insert a comma in the string, or do you want to format a number as "100,000,000,000.00"?
> 

I'm not sure what you're trying to do though.
Do you need to fix the file by adding a comma at appropriate places? Or
read it into D and write it to the console with your currency format?
This is one way of reading in the values using slices and std.conv:

import std.stdio, std.conv;
void main() {
    immutable input = "000000000041415";
    double amount = input[0..$-2].to!double();
    amount += input[$-2..$].to!double() / 100;
    writeln(amount);
}

July 12, 2014
On Thursday, 10 July 2014 at 19:33:15 UTC, simendsjo wrote:
> On 07/10/2014 06:05 PM, Alexandre wrote:
>> I have a string X and I need to insert a char in that string...
>> 
>> auto X = "100000000000000";
>> 
>> And I need to inser a ',' in position 3 of this string..., I try to use
>> the array.insertInPlace, but, not work...
>> 
>> I try this:
>> auto X = "100000000000000";
>> auto N = X.insertInPlace(1,'0');
>
> Do you really want to insert a comma in the string, or do you want to
> format a number as "100,000,000,000.00"?

For that, one approach would be as in http://dpaste.dzfl.pl/bddb71eb75bb.
« First   ‹ Prev
1 2