help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: strjust


From: Jaroslav Hajek
Subject: Re: strjust
Date: Fri, 15 Oct 2010 12:39:25 +0200

On Fri, Oct 15, 2010 at 9:14 AM, Leo Butler <address@hidden> wrote:
>
>
> On Thu, 14 Oct 2010, Ozzy Lash wrote:
>
> < 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
>
> Ben, thanks for looking into this.
>
> To clarify: my original email was a genuine inquiry, not a request
> for change. However, would it not be possible to modify strjust so that
> the definition of whitespace can be input by the user, e.g.
>
> strjust(string,"left",[9,32])
> strjust(string,"right",[" ","\t"])
>
> The default behaviour need not change.
>
> Leo
>


The problem is that tab is very seldom treated as equivalent to a
single space (or null in this case, which was included for
compatibility). Usually it's eight or two or whatever. I believe
that's why it was excluded here. I suggest you use strrep (possibly
combined with cellstr/strvcat) to replace tabs by whatever amount of
spaces you consider appropriate, and then use strjust.

hth



reply via email to

[Prev in Thread] Current Thread [Next in Thread]