乙個特殊的字串拼接

2021-10-19 12:42:26 字數 2796 閱讀 6305

前段時間遇到乙個需求,最後最後乙個步驟是進行字串的拼接。

1、需求

首先選擇字串片段:通過滑鼠拖拽選取字串中的字元,同時記錄每一次拖拽選取的內容相對整個字串是從第幾個字元到第幾個字元。

第一步,選取需要精確處理的,選取次數不限制。

第二步,選取需要普通處理的,選取次數不限制。

每一次的字元選取都能得到開始位置和結束位置。

拼接規則:

對於需要精確處理的,在拼接字串時要在開始位置插入****,同時在結束位置插入****

對於需要普通處理的,在拼接字串時要在開始位置插入####,同時在結束位置插入####

若是需要精確處理和需要普通處理的開始位置相同,則在開始位置插入####****,若是需要精確處理和需要普通處理的結束位置相同,則在結束位置插入****####

2、解題思路

1、每一次的字元選取都能得到起始位置和結束位置。分別將精確處理和普通處理將每一次選取得到的位置資料都儲存在乙個陣列中。大致格式如下

const exact =[,

,]const normal =[,

,]

2、可以知道,總是在開始位置之前和結束位置之後插入,同時精確和普通分別插入的字元是*#。那麼,可以將這些資訊也新增進來。得到下面的結果。

const exacts =[,

,]const exacte =[,

,];const normals =[,

,];const normale =[,

,]

const result = exacts.

concat

(exacte, normals, normale)

.sort

(function

(a, b));

result=[,

,,,,

,,,,

,,]

4、遍歷上一步得到的陣列,同時進行字串的拼接。

陣列項中,position表示是在哪個位置(前/後)插入字元,flag表示插入哪種字元,index表示第幾個字元

這樣乙個陣列項表示:在字串的第12個字元後面插入****遍歷陣列,根據index的值進行查詢,是否還有與index的值相同的陣列項

如果沒有:根據flagposition在相應位置插入指定的字元。

如果有:假設兩項都是在index之前插入,乙個插入****乙個插入####,根據提到的插入規則。最終需要在第index個字元前插入####****; 都是在第index之後插入,那麼最終需要在第index個字元後插入****####至此,所有與相同的index的值相等陣列的項已經處理過了,於是處理接著處理後面的陣列項。迴圈執行步驟4到步驟6,直到陣列遍歷結束。

大致的字串拼接實現過程如下:

function

stringconcat()

,);}

);holistic = holistic.

sort

((x, y)

=>);

holistic.

foreach

((item, i)

=>

= item;

let arr =

findequalindex

(holistic, index, i)

;const currentcode = initialstring[index]

? initialstring[index]:''

;let precode;

if(i ===0)

else

// 找到相同的index

if(arr.length >0)

=processsameindex

(arr);if

(i < holistic.length -1)

else

i = i + arr.length -1;

}else

else

}else

else}}

}); console.

log(hong);}

// 查詢相同的index

function

findequalindex

(holistic, index, ind)

if(holistic[i]

.index === index)

}return arr;

}// 當index相同時,怎麼處理

function

processsameindex

(arr)

else}if

(beforearr.length ===0)

else

if(beforearr.length ===1)

else}if

(equal)}if

(afterarr.length ===0)

else

if(afterarr.length ===1)

else}if

(equal)

}return

;}

js的字串的乙個特殊方法

字串原型鏈上有兩個很便捷的拼接字串方法,padstart maxlength,string 與padend maxlength,string 第乙個引數是字串長度,第二個是你要填充的字串。兩個有start與end,顧名思義就是乙個拼接前面乙個拼接後面。例如 var str 1 console.log...

shell指令碼變數字串拼接的乙個坑

背景 問題發生在jenkins持續整合的打包指令碼上,我們需要將資料庫指令碼按照不同條件抽取出來,放到不同的資料夾下。問題分析 要實現這個需求,其中自然少不了條件判斷,其中有一段 if d temppath version version standard then 它的邏輯是,如果存在標準 sta...

拼接字串

border 1 class box 標籤名稱th 是否顯示th 標籤順序th tr thead 首頁td class check 是option 否option select td class number 1option 2option 3option 4option 5option 6opti...