Hi,
في ر، 14-07-2010 عند 20:45 +0930 ، كتب James Moschou:
> On 14 July 2010 16:40, Luca Bruno <[email protected]> wrote:
> > On Wed, Jul 14, 2010 at 12:00:58PM +0930, James Moschou wrote:
> >> Hello,
> >>
> >> Is there a convenient way to convert from a byte index in a string to
> >> its character offset and vice-versa?
> >>
> >> I know string has pointer_to_offset(string pos), but that's for
> >> pointers, I have the value of a byte index, i.e. an int/uint/long
> >> value, not a pointer.
> >
> > Maybe you're looking for: yourstring+index
> >
>
> I'm sorry I don't see how this is what I want. My problem is that I am
> implementing a text view with a cursor that works in characters.
> However I use Pango to figure out where to draw the cursor, and Pango
> works in bytes, so I need to convert between the two.
>
> I reckon I could do:
> byte_offset = mystring.substring(0, character_offset).to_utf8().length;
> But that seems unwieldy, and I'm not sure how to go the other way.
I'm not sure what you want exactly, converting from byte offset to
character offset or the other way around?
Either way, you can use offset/pointer_to_offset for character offsets
and raw pointer arithmetic (you'll probably need to cast to char*) for
byte offsets. So :
byte_offset = ((char*) mystring.offset(character_offset)) - ((char*)
mystring);
should be ok. I agree it's not very nice (and it could be a builtin
method) but that should do it (also it doesn't require copying anything,
where yours does 2 copies).
HTH,
Abderrahim
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list