1

次のコードはコードを適切に作成しますが、次の問題のみです

<cfset str = "Previoushistory-Diagnosis= 085.2 : Cutaneous leshmaniasis, Asian desert**Controlled-Diagnosis= 085.2 : Asian desert cutaneous leishmaniasis**Controlled-Diagnosis= 153.2 : Cancer of colon, descending colon**Active-Diagnosis= 209.15 : MAL CARCINOID DESC COLON**151.9 : Stomach cancer= UNCONTROLLED">
<cfset string1 = ''>
<cfset generateLst = ''>
<cfset generateLst = ''>
<cfset generateTextlst = ''>
<cfset generateStr = ''>
<cfloop list="#str#" index="elem" delimiters="**">
<cfset string1 = listAppend(string1, elem,'~')>
<cfset delimis = ":">
    <cfloop list="#string1#" index="k" delimiters="~">
    <cfset getString = GetToken(k,1,'#delimis#')>
    <cfset generateStr = ListRemoveDuplicates(ListAppend(generateStr,getString))>
    <cfset getID = GetToken(k,2,'#delimis#')>
    <cfset generateLst = ListRemoveDuplicates(ListAppend(generateLst,getID))>
    <cfset getText = GetToken(k,3,'#delimis#')>
    <cfset generateTextlst = ListRemoveDuplicates(ListAppend(generateTextlst,getText))>
    </cfloop>
</cfloop>
<cfdump var="#str#"><br /><br>
<cfdump var="#generateStr#"><br /><br />
<cfdump var="#generateLst#"><br /><br />
<cfdump var="#generateTextlst#">

生成された出力

generateStr の場合

Previoushistory-Diagnosis= 085.2 ,Controlled-Diagnosis= 085.2 ,Controlled-Diagnosis= 153.2 ,Active-Diagnosis= 209.15 ,151.9 

generateLst の場合

Cutaneous leshmaniasis, Asian desert, Asian desert cutaneous leishmaniasis, Cancer of colon, descending colon, MAL CARCINOID DESC COLON, Stomach cancer= UNCONTROLLED

generateTextlst の場合

[empty string] 

今、問題はそこにあります

<cfdump var="#generateStr#"><br /><br />
<cfdump var="#generateLst#"><br /><br />

これで、 generateStrの値は次のようになります。

Previoushistory-Diagnosis= 085.2 ,Controlled-Diagnosis= 085.2 ,Controlled-Diagnosis= 153.2 ,Active-Diagnosis= 209.15 ,151.9

このように変更できますか

085.2 ,085.2 ,153.2 ,209.15 ,151.9

削除された値を使用して、このように関連する2番目のリストに追加します

皮膚リーシュマニア症、アジア砂漠* =Previoushistory-Diagnosis *、アジア砂漠皮膚リーシュマニア症* =Controlled-Diagnosis *、結腸癌、下行結腸* =Controlled-Diagnosis *、MAL CARCINOID DESC COLON* =Active-Diagnosis *、胃癌=制御不能

上記のように実際にそれを実現するために、いくつかのリスト要素をどのように操作すればよいか混乱しています

任意のガイダンス

4

2 に答える 2

1

始めるにはこれで十分です。私はあなたを次のcfloopように変更しました:

<cfloop list="#string1#" index="k" delimiters="~">
    <cfset getString = GetToken(k,1,'#delimis#')>
    <cfset getText = Trim(GetToken(getString,1,'='))>    <!--- this returns the text for example Previoushistory-Diagnosis --->
    <cfset getValue = Trim(GetToken(getString,2,'='))>   <!--- this returns the value for example 085.2 --->
    <cfset generateStr = ListRemoveDuplicates(ListAppend(generateStr,getValue))>
    <cfset getID = GetToken(k,2,'#delimis#')>
    <cfset newText = getID & "=" & getText>              <!--- this concatenates the two strings together with = inbetween --->
    <cfset generateLst = ListRemoveDuplicates(ListAppend(generateLst,newText))>
    <cfset getText = GetToken(k,3,'#delimis#')>
    <cfset generateTextlst = ListRemoveDuplicates(ListAppend(generateTextlst,getText))>
</cfloop>

次のように出力generateStrします。

085.2,153.2,209.15,

そしてgenerateLst次のように:

 Cutaneous leshmaniasis, Asian desert=Previoushistory-Diagnosis, Cutaneous leshmaniasis, Asian desert cutaneous leishmaniasis=Controlled-Diagnosis, Cancer of colon, descending colon=Controlled-Diagnosis, MAL CARCINOID DESC COLON=Active-Diagnosis, Cutaneous leshmaniasis, Stomach cancer= UNCONTROLLED=151.9

リストの最後に空の値があることに注意してくださいgenerateStr。これは、strリストの最後の値が他の値の形式に適合しないためです。値は、文字151.9の後ではなく先頭にあります。=

これにより、generateLstリストからも除外されます。最後の値が になりますがStomach cancer= UNCONTROLLED=151.9、これは望ましくないと思います。

そのため、必要なものを完成させるために、これをもう少しいじる必要があります。一貫性のないデータの文字列を解析しようとすると、明らかにこれらの問題が発生します。

于 2013-07-18T13:00:30.543 に答える
0

このようなものがうまくいくかもしれません:

NewList = ListFirst(generateLst);  //Cutaneous leshmaniasis
for (i = 2; i lte ListLen(generateLst); i++) {
NewList = ListAppend(ListGetAt(generateLst, i) &  "=");  
//Cutaneous leshmaniasis, Asian desert=
TempText = ListGetAt(generateStr, i -1); //Previoushistory-Diagnosis= 085.2
TempText2 = ListLast(TempText, "=");  // 085.2
NewList &= TempText2;  //Cutaneous leshmaniasis, Asian desert=085.2
}
NewList = Replace(NewList, ",", ", ", "all);
于 2013-07-18T12:29:22.037 に答える