Hyperlinks im Textfeld oder Textbearbeitungsfeld?Gibt es eine Möglichkeit, einen Hyperlink in ein Textfeld oder Textbearbeitungsfeld einzufügen?Ich weiß, dass Sie dies in einer JMP-Tabelle mit dem Spaltentyp „Ausdruck“ tun können und dass Sie in einem Fenster ein Schaltflächenfeld erstellen können, das wie ein Hyperlink fungiert.Mir ist auch die <<-Markup-Syntax für Textfelder bekannt, aber damit können Sie nur Fett, Unterstrichen und Kursiv schreiben.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Sehr cooler Ansatz @ich h
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Kombinieren @Byron_JMP Mit der Webbrowser-Box-Idee von können Sie mit Ihrer Regex-Zeichenfolge eine formatierte HTML-Datei mit eingebetteten Links speichern und diese in Ihrem Fenster anzeigen.Plötzlich haben Sie viel Kontrolle über die Textformatierung; Sie können Benutzern sogar erlauben, optional einen benutzerfreundlichen Namen zur Link-Syntax hinzuzufügen, z. B. [JMP-Website] http://www.jmp.com , ähnlich einer Markup-Syntax.

Names Default To Here( 1 );
text = "Periarthritis is defined as: Inflammation of the tissues around a joint. " ||
"[A Link]http://www.reference.md/files/D010/mD010489.html As arthralgia, myalgia, tendonitis " ||
"and other musculoskeletal issues are listed events, periarthritis can be considered listed as well.
Comment: no good sentinel case — not a new signal; one case also reported somnolence and " ||
"another case reported “yawny” which could mean sleepy *http://www.ncbi.nlm.nih.gov/pubmed/12530994";
t = text;
//wrap links in a string with <A href="https://community.jmp.com/" target="_blank"> tags
findlinks = function({t, recct=0}, {url_regex, rgxmatch = {}, rtn=""},
recct++;
if(recct > 100,
throw("Recursion to deep: " || char(recct) || " levels. Still need to parse: '" || t || "'"));
url_regex = "^(.*?)(\!\[(.+)\])?((https?://){0,}(\w+\.){2,}\w+/?(\w+/?){0,}(\.\w+){0,1}/?)(\b.*)$";
rgxmatch = Regex Match(t, url_regex);
if( N Items(rgxmatch) == 0,
rtn = t, //No link
if( N Items(rgxmatch) == 10, //found a link
rtn = rgxmatch[2] ||
"</A><A href="" || rgxmatch[5] || "" target="_blank" rel="nofollow noopener noreferrer">" || if(is missing(rgxmatch[4]), rgxmatch[5], rgxmatch[4] ) || "</A>" ||
findlinks(rgxmatch[10], recct),
throw("Error matching regex in: '" || t || "'")
)
);
return(rtn)
);
//Create a simple html page from a block of text, save it to the temp files, and return the filename
texttohtmlfile = function({t},
Save text file("$TEMP/Temp HTML file.html", "" || findlinks(t) || "")
);
//Make a temp html file
fn = texttohtmlfile(text);
//Simple window to display html file, deletes the temp file when it closes
w = New Window("Example",wb = Web Browser Box());
w << On Close( Delete File( fn ) );
wb << Set Size(1000, 200);
wb << Set Auto Stretching( 1, 1 );
wb << Set Max Size( 1000, 1000 );
//Show the html file in the window
wb << Navigate( fn );Beachten Sie den unglücklichen Schrägstrich im Regex-Übereinstimmungsausdruck, da „\[“ einen Abschnitt mit „Escape-Zeichen“ beginnt.
Bearbeitet, um einen Screenshot hinzuzufügen und erneut, um einen Tippfehler zu korrigieren.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Danke für diesen Vorschlag, Mark.Ich möchte jedoch nicht, dass meine Benutzer Tags für URLs einbetten müssen.Mein Chef hat sich einen regulären Ausdruck ausgedacht, der ziemlich gut funktioniert:
// Sample text
text = "Periarthritis is defined as: Inflammation of the tissues around a joint. " ||
"http://www.reference.md/files/D010/mD010489.html As arthralgia, myalgia, tendonitis " ||
"and other musculoskeletal issues are listed events, periarthritis can be considered listed as well.
Comment: no good sentinel case — not a new signal; one case also reported somnolence and " ||
"another case reported “yawny” which could mean sleepy *http://www.ncbi.nlm.nih.gov/pubmed/12530994";
url_regex = "\b(https?://){0,}(\w+\.){2,}\w+/?(\w+/?){0,}(\.\w+){0,1}/?\b";
text_list = {};
link_list = {};
keep_going = 1;
istart = 1;
text_len = length(text);
i = 0;
while(keep_going,
new_text = substr(text, istart);
link_text = regex(new_text, url_regex);
if (!is missing(link_text),
// then
i++;
start_pos = contains(text, link_text, istart);
text_list[i] = substr(text, istart, (start_pos - istart - 1));
link_list[i] = link_text;
istart = start_pos + length(link_text);
,
// else no link found
i++;
text_list[i] = new_text;
keep_going = 0;
);
);
tb = {};
lb = {};
nt = nitems(text_list);
nw = new window("Test link",
vb = vlistbox(
)
);
for(i = 1, i <= nt, i++,
tb[i] = text box(text_list[i], << set width(400));
vb << append(tb[i]);
if (i < nt,
one_button = evalinsert("\[lb[i] = button box("^link_list[i]^", web("^link_list[i]^"), << underline style(1) )]\");
eval(parse(one_button));
vb << append(lb[i]);
);
);
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Siehe Regex()-Funktion. Es könnte nützlich sein. Der reguläre Ausdruck wäre ziemlich einfach.
Names Default to Here( 1 );
text = "Periarthritis is defined as: Inflammation of the tissues around a joint. " ||
"<L>http://www.reference.md/files/D010/mD010489.html</L> As arthralgia, myalgia, tendonitis " ||
"and other musculoskeletal issues are listed events, periarthritis can be considered listed as well.
Comment: no good sentinel case — not a new signal; one case also reported somnolence and " ||
"another case reported “yawny” which could mean sleepy *<L>http://www.ncbi.nlm.nih.gov/pubmed/12530994</L>";
Regex( text,
"<L>(.+?)</L>",
"\1"
);
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Vielen Dank für Ihre bisherigen Kommentare und Vorschläge.Ich habe nicht den Luxus zu wissen, wo sich die URLs in den Benutzerkommentaren befinden.
Hier sind einige Beispielausgaben:

Hier ist ein Beispielcode.Ich habe es einfacher gemacht, indem ich die URL-Markierungen und verwendet habe.Ich habe mithilfe von Regex mit der URL-Position herumgespielt, um die Verwendung dieser Markierungen zu vermeiden.Wenn jemand einen guten regulären Ausdruck zum Finden von URLs hat, lassen Sie es mich wissen.Ich habe bisher unterschiedlichen Erfolg mit dem, was ich im Netz gefunden habe.
// link markup example
text = "Periarthritis is defined as: Inflammation of the tissues around a joint. " ||
"<L>http://www.reference.md/files/D010/mD010489.html</L> As arthralgia, myalgia, tendonitis " ||
"and other musculoskeletal issues are listed events, periarthritis can be considered listed as well.
Comment: no good sentinel case — not a new signal; one case also reported somnolence and " ||
"another case reported “yawny” which could mean sleepy *<L>http://www.ncbi.nlm.nih.gov/pubmed/12530994</L>";
text_list = {};
link_list = {};
keep_going = 1;
istart = 1;
linkstart = "<L>";
linkend = "</L>";
text_len = length(text);
i = 0;
while(keep_going,
start_pos = contains(text, linkstart, istart);
if (start_pos,
end_pos = contains(text, linkend, istart);
if (end_pos,
i++;
text_list[i] = substr(text, istart, (start_pos - istart));
link_list[i] = substr(text, start_pos + 3, (end_pos - start_pos - 3));
istart = istart + end_pos - istart + 4;
);
);
if (!start_pos,
i++;
text_list[i] = substr(text, istart);
keep_going = 0;
);
);
tb = {};
lb = {};
nt = nitems(text_list);
nw = new window("Test link",
vb = vlistbox(
)
);
for(i = 1, i <= nt, i++,
tb[i] = text box(text_list[i], << set width(400));
vb << append(tb[i]);
if (i < nt,
one_button = evalinsert("\[lb[i] = button box("^link_list[i]^", web("^link_list[i]^"), << underline style(1) )]\");
eval(parse(one_button));
vb << append(lb[i]);
);
);
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Oh, und machen Sie die Mousebox (TextBox) zu einer Funktion oder einem Ausdruck, der viele Male verwendet werden kann, wobei sich nur der Text, der gefundene Link, ändert.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Diese Lösung erfordert etwas Besonderes: eine WrapListBox und eine MouseBox.
Names Default To Here( 1 );
New Window( "WrapListBox",
Wrap List Box(
TextBox("This is a long comment to be followed by a link "),
MouseBox(TextBox(" <U>http://www.jmp.com</U> ",<<FONT color="">");
web(lnk);
(this<<CHILD></CHILD></FONT>
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Sie könnten einen regulären Ausdruck verwenden, um das Hyperlinkmuster abzugleichen.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Ich denke, es wäre möglich, den Inhalt des Textfelds nach einem HTML-Link zu analysieren (Muster zu finden, die mit „//:http“ beginnen) und dann für jedes Muster ein Schaltflächenfeld mit dem darin enthaltenen Link an das Textfeld anzuhängen wird analysiert.
Das wird allerdings ziemlich komplex. Es wäre viel besser, wenn die Links im Text erkannt würden und anklickbar wären.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Wenn Sie damit einverstanden sind, dass das gesamte Feld als Link fungiert, können Sie ein Schaltflächenfeld verwenden:
New Window( "Example",
Text box("Text Block 1"),
Button box( "http://www.jmp.com/", Web( "http://www.jmp.com/" ), Underline Style( 1 ) )
)Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Danke Byron, das ist ein cooles Drehbuch.Aber es ist nicht das, wonach ich gesucht habe.Konkret möchte ich einen Link in ein Textfeld einbetten und ihn anklickbar machen.Meine Benutzer geben Kommentare ein, die lang sein können und Referenzlinks enthalten können.Ich arbeite an einem Ansatz, bei dem ich die Links analysiere und Folgendes anzeige:
Textblock1 (in einem Textfeld)
Link1 (als anklickbarer Link)
Textblock2 (in einem Textfeld)
Link2 (als anklickbarer Link)
Textblock3
usw.
Das dürfte für die Nutzer akzeptabel sein.
Betreff: Hyperlinks im Textfeld oder Textbearbeitungsfeld?Ich vermute, Sie suchen etwas Anspruchsvolleres als das, aber ...
Names Default To Here( 1 );
New Window( "Example",
hlistbox("1",
wb = Web Browser Box(),
bb=Button Box( "Take Me to JMP",
wb << Navigate( "http://www.jmp.com" );
wb << Set Auto Stretching( 1, 1 );
wb << Set Max Size( 1000, 1000 );
)));