On Wednesday, August 17, 2016 at 5:52:47 PM UTC, Rishabh Raghunath wrote:
>
> I am a beginner in Julia and I am more familiar with the C language..
>
 

> I am actually learning Julia for use in a programming contest and love the 
> experience so far..
> There are often questions that require you to manipulate the characters 
> comprising the string. Its easy to do in C as strings are nothing but an 
> array of Characters
>

A lot is not as easy as you might think :) I haven't looked up C recently, 
but at least C++14 has now 4 char literals (and 5 string), and C++17 added 
the 5th "utf8" literal that is bizzare as it only supports ASCII.. Things 
used to be simple with fixed-sized length ASCII and EBCDIC 
<http://www.ibm.com/support/knowledgecenter/SS2MB5_14.1.0/com.ibm.xlf141.bg.doc/language_ref/asciit.html>,
 
with the latter still holding back C++ (or you might be optimisitc and say 
it makes C++ more portable..). Unicode, and e.g. grapheme clusters, made 
strings of letters ("Char"s, not just meaning bytes) a can-of-worm..

Having said that.. I was thinking up a new mutable string type.. (seems 
Julia developers are too with at least similar ideas).

-- 
Palli.

>
> On Wed, Aug 17, 2016 at 10:48 PM, ggggg <galen...@gmail.com <javascript:>> 
> wrote:
>
>> Isn't it a red herring to say that strings lack setindex because they are 
>> immutable? I think strings don't have setindex! because it is considered to 
>> be a bad API choice, at least partially because you can't do O(1) indexing 
>> for many string encodings.
>>
>> I can easily define a setindex! method* that does what the OP is 
>> expecting, so how can this be related to strings being immutable? 
>>
>> *julia> **Base.setindex!(s::ASCIIString, v,i) = s.data[i]=v*
>>
>> *setindex! (generic function with 58 methods)*
>>
>> *julia> **a="abc"*
>>
>> *"abc"*
>>
>> *julia> **a[1]='7';a*
>>
>> *"7bc"*
>>
>> *julia> **a[1]+=1;a*
>>
>> *"8bc"*
>>
>> *This works in 0.4, and I'm lead to believe this is considered a bad idea.
>>
>> On Wednesday, August 17, 2016 at 12:40:36 AM UTC-6, Jacob Quinn wrote:
>>>
>>> Strings are immutable (similar to other languages). There are several 
>>> different ways to get what you want, but I tend to utilize IOBuffer a lot:
>>>
>>> a = "abcd"
>>> io = IOBuffer()
>>>
>>> for char in a
>>>     write(io, a + 1)
>>> end
>>>
>>> println(takebuf_string(io))
>>>
>>> -Jacob
>>>
>>> On Wed, Aug 17, 2016 at 12:30 AM, Rishabh Raghunath <rishi9...@gmail.com
>>> > wrote:
>>>
>>>>
>>>> Hello fellow Julia Users!!
>>>>
>>>> How do you manipulate the individual characters comprising a string in 
>>>> Julia using a for loop ?
>>>> For example:
>>>> ###################
>>>>
>>>> a = "abcd"
>>>>
>>>>   for i in length(a)
>>>>    a[i]+=1
>>>>  end
>>>>
>>>> print(a)
>>>>
>>>> ####################
>>>>  I am expecting to get my EXPECTED OUTPUT as        "     bcde      "
>>>>
>>>>  BUT I get the following error:  
>>>> ##########################################
>>>>
>>>>  ERROR: MethodError: `setindex!` has no method matching 
>>>> setindex!(::ASCIIString, ::Char, ::Int64)
>>>>  [inlined code] from ./none:2
>>>>  in anonymous at ./no file:4294967295
>>>>
>>>> ##########################################
>>>> I also tried using:
>>>>
>>>> for i in eachindex(a) instead of the for loop in the above program .. 
>>>> And I get the same error..
>>>>
>>>> Please tell me what i should do to get my desired output ..
>>>> Please respond ASAP..
>>>> Thanks..
>>>>
>>>
>>>
>

Reply via email to