[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: strjust
From: |
Ozzy Lash |
Subject: |
Re: strjust |
Date: |
Thu, 14 Oct 2010 16:53:50 -0500 |
On Thu, Oct 14, 2010 at 4:42 PM, Ben Abbott <address@hidden> wrote:
> On Oct 14, 2010, at 1:58 PM, Ozzy Lash wrote:
>
>> On Thu, Oct 14, 2010 at 3:06 PM, Ben Abbott <address@hidden> wrote:
>>>
>>> On Oct 14, 2010, at 12:20 PM, Ozzy Lash wrote:
>>>
>>>> On Thu, Oct 14, 2010 at 10:36 AM, Ben Abbott <address@hidden> wrote:
>>>>> On Oct 14, 2010, at 7:03 AM, Leo Butler <address@hidden> wrote:
>>>>>
>>>>>> On Wed, 13 Oct 2010, Ben Abbott wrote:
>>>>>>
>>>>>> < On Oct 13, 2010, at 12:16 AM, Leo Butler <address@hidden> wrote:
>>>>>> <
>>>>>> < > In 3.3.52+, I find the following behaviour of strjust,
>>>>>> < > which appears to conflict with its description.
>>>>>> < >
>>>>>> < > octave> s=sprintf("\tstring");
>>>>>> < > octave> s=strjust(s,"left")
>>>>>> < > s = string
>>>>>> < > octave> s=sprintf(" string");
>>>>>> < > octave> s=strjust(s,"left")
>>>>>> < > s = string
>>>>>> < >
>>>>>> < > You can see that it is not removing leading tabs.
>>>>>> < >
>>>>>> < > Leo
>>>>>> <
>>>>>> < Does the description below clarify how strjust functions?
>>>>>> <
>>>>>> < strjust (S)
>>>>>> < strjust (S, "right")
>>>>>> < Returns the text, S, justified to the right.
>>>>>> < strjust (S, "left")
>>>>>> < Returns left justified text.
>>>>>> < strjust (S, "center")
>>>>>> < Returns center justified text.
>>>>>> < Null characters are replaced by spaces.
>>>>>>
>>>>>> Here is the info description:
>>>>>>
>>>>>> -- Function File: strjust (S, ["left"|"right"|"center"])
>>>>>> Shift the non-blank text of S to the left, right or center of the
>>>>>> string. If S is a string array, justify each string in the array.
>>>>>> Null characters are replaced by blanks. If no
>>>>>> justification is
>>>>>> specified, then all rows are right-justified.
>>>>>>
>>>>>> By comparison:
>>>>>> -- Function File: strtrim (S)
>>>>>> Remove leading and trailing blanks and nulls from S.
>>>>>>
>>>>>> And here is how each works:
>>>>>>
>>>>>> octave> s=sprintf("\tstring");
>>>>>> octave> strjust(s,"left")
>>>>>> ans = string
>>>>>> octave> strtrim(s)
>>>>>> ans = string
>>>>>>
>>>>>> You see that the definition of 'blank' is inconsistent.
>>>>>>
>>>>>> Leo
>>>>>
>>>>> I've pushed the change below.
>>>>>
>>>>> http://hg.savannah.gnu.org/hgweb/octave/rev/04c3aacbbc46
>>>>>
>>>>> Thanks
>>>>> Ben
>>>>>
>>>>
>>>> I think I agree with Leo, and that tabs should be treated as
>>>> whitespace (or blanks) and should be stripped for justification, If
>>>> not, I think that there is an issue for right justification as well.
>>>>
>>>
>>> Ok. I hadn't realized Leo was asking that the way strjust() works should be
>>> changed.
>>>
>>> How might strjust() be modified and remain compatible with Matlab?
>>>
>>> Ben
>>>
>>>
>>
>> Not having access to Matlab, I'm not sure what it does in these cases.
>> It would be interesting to see what matlab does with the above, and
>> also with strings that have embedded or trailing tabs. Here is a stab
>> at a test case:
>>
>> a=["test 1";"\ttest 2";"test\t3";"test 4\t"]
>> strjust(a,"left")
>> strjust(a,"right")
>> strjust(a,"center")
>>
>> I can see that handling the tab case may be difficult, since it would
>> normally be translated to a different number of spaces depending where
>> it is being printed, and possibly Matlab will give the same results as
>> octave, it just seems a little counter intuitive.
>>
>> Bill
>
> To work properly with Matlab, I modified the script as ...
>
> str1 = sprintf('test 1 ');
> str2 = sprintf('\ttest 2');
> str3 = sprintf('test\t3 ');
> str4 = sprintf('test 4\t');
> a = [str1; str2; str3; str4];
> for n = 1:size(a,1)
> fprintf ('"%s"\n', strjust(a(n,:),'left'))
> fprintf ('"%s"\n', strjust(a(n,:),'right'))
> fprintf ('"%s"\n', strjust(a(n,:),'center'))
> end
>
> The result is
>
> "test 1 "
> " test 1"
> "test 1 "
> " test 2"
> " test 2"
> " test 2"
> "test 3 "
> " test 3"
> "test 3 "
> "test 4 "
> "test 4 "
> "test 4 "
>
> The tabs are treated the same as the alpha-numerics.
>
> The MathWorks site is down (for me) at the moment ... but please try to look
> at how they've defined strjust() to work. An old, but mirrored version, is at
> the link below.
> http://amath.colorado.edu/computing/Matlab/OldTechDocs/ref/strjust.html
>
> Ben
>
>
It looks like the Octave behavior, is consistent with Matlab then.
So your clarification in the documentation should clear up any
confusion.
The Matlab documentation isn't very descriptive.
Bill
- strjust, Leo Butler, 2010/10/13
- Re: strjust, Ben Abbott, 2010/10/13
- Re: strjust, Leo Butler, 2010/10/14
- Re: strjust, Ben Abbott, 2010/10/14
- Re: strjust, Ozzy Lash, 2010/10/14
- Re: strjust, Ben Abbott, 2010/10/14
- Re: strjust, Ozzy Lash, 2010/10/14
- Re: strjust, Ben Abbott, 2010/10/14
- Re: strjust,
Ozzy Lash <=
- Re: strjust, Leo Butler, 2010/10/15
- Re: strjust, Jaroslav Hajek, 2010/10/15
- Re: strjust, Ben Abbott, 2010/10/15
- Re: strjust, John W. Eaton, 2010/10/15
- Re: strjust, Leo Butler, 2010/10/15
- Re: strjust, Ben Abbott, 2010/10/15
- New function - untabify (was: strjust), Ben Abbott, 2010/10/17
- New function - untabify (was: strjust), John W. Eaton, 2010/10/17
- Re: New function - untabify (was: strjust), Ben Abbott, 2010/10/17
- Re: New function - untabify (was: strjust), John W. Eaton, 2010/10/17