String s = " XXXXX XXXXXX";
String ts = s.replaceAll(" {4}", "\t");
Regards,
Bart
elingtse@gmail.com - 31 Dec 2005 11:13 GMT
Thanks Bart, but it did not work because I am using a char array to
hold the statement, String method cannot be used here. Any other
suggestion ?
Bart Cremers - 31 Dec 2005 23:05 GMT
String s = new String(charArray);
charArray = s.replaceAll(" {4}", "\t").toCharArray();
This should work for the simple case of replacing 4 consecutive spaces
with a single tab.
As Larry pointed out, it would be more complex if you need to consider
correct tab stops and stuff.
Bart
elingtse@gmail.com - 01 Jan 2006 04:28 GMT
> String s = new String(charArray);
> charArray = s.replaceAll(" {4}", "\t").toCharArray();
[quoted text clipped - 6 lines]
>
> Bart
It works perfectly.
Thanks Bart & Larry, you do me a great favor.
> HI all,
>
[quoted text clipped - 16 lines]
> ttsXXXXXtssXXXXXX
> (replace every consecutive 4 space into tab)
But you probably need to do more than that for a real "tabify".
Consider:
stXXX, sstXXX, or ssstXXX all become tXXX
and probably sXXX becomes tXXX
XsssX becomes XtX, XXssX becomes XXtX
and probably XXXsX becomes XXXtX
For a tabify operation, your above example is incorrect.
To get the same layout,
sssssssssXXXXXssssssXXXXXX becomes
ttsXXXXXttXXXXXX
Maintain a screen position separately from the character
position, and update it differently when a tab is
encountered:
screen_pos += TAB_SIZE - (screen_pos % TAB_SIZE).
Keep a running count of consecutive spaces. If a series of
spaces ends at (screen_pos % TAB_SIZE) == TAB_SIZE -1,
replace them with a tab. Else if a series of spaces ends at a tab,
delete them. For a character array, you can do this in place
by keeping a "follower" index and copying characters to
there.