最大 20 単語の文字列があります。ユーザーが 20 語を超える何かを入力した場合、文字列を 20 語目で切り詰める必要があります。これをどのように自動化できますか? #GetToken(myString, 20, ' ')# で 20 番目のトークンを見つけることができますが、左トリムするためにその位置を見つける方法がわかりません。何か案は?前もって感謝します。
4 に答える
8
UDF ListLeft()は、必要なことを行う必要があります。リストを受け取り、定義した要素の数を含むリストを返します。区切り文字は「スペース」で構いません。
/**
* A Left() function for lists. Returns the n leftmost elements from the specified list.
*
* @param list List you want to return the n leftmost elements from.
* @param numElements Number of leftmost elements you want returned.
* @param delimiter Delimiter for the list. Default is the comma.
* @return Returns a string,
* @author Rob Brooks-Bilson (rbils@amkor.com)
* @version 1, April 24, 2002
*/
function ListLeft(list, numElements){
var tempList="";
var i=0;
var delimiter=",";
if (ArrayLen(arguments) gt 2){
delimiter = arguments[3];
}
if (numElements gte ListLen(list, delimiter)){
return list;
}
for (i=1; i LTE numElements; i=i+1){
tempList=ListAppend(tempList, ListGetAt(list, i, delimiter), delimiter);
}
return tempList;
}
ps CFLIB.org は優れたリソースであり、通常、このようなものを探しているときに最初に立ち寄ります。強くお勧めします。
于 2009-07-21T17:55:42.733 に答える
2
Can also use a regular expression (group #1 contains match): ^(?:\w+\s+){19}(\w+)
于 2009-07-21T18:05:31.170 に答える
0
CF がこれを提供するかどうかはわかりませんが、通常は LastIndexOf(string token) メソッドがあります。部分文字列関数と組み合わせて使用します。例 (疑似コード):
string lastWord = GetToken(myString, 20, ' ');
string output = Substring(mystring, 0, LastIndexOf(mystring, lastWord)+StrLength(lastWord));
于 2009-07-21T17:53:34.487 に答える
0
おそらく、トリミングを避けて、代わりに結果を最初から再構築することができます (疑似コード、ColdFusion はわかりません):
result = ''
for (i = 0; i < 20; ++i)
{
result = result + GetToken(myString, i, ' ');
}
それはうまくいくでしょうか?
于 2009-07-21T17:51:00.403 に答える