I found a clumsy way, but workable, I think:
1. First change the last char 'B' to something different like '&'. so Z10B10S10B ==> Z10B10S10X
/*
UPDATE TB_BarcodeTag2
SET Barcode = STUFF(Barcode, LEN(Barcode),1, '&')
WHERE Barcode LIKE 'Z%B%S%' AND Barcode like '%B'
*/
2. Replace Z,B, S to blank and '-'
/*
UPDATE TB_BarcodeTag2
SET Barcode = REPLACE(REPLACE(REPLACE(Barcode, 'Z', ''),'B','-'),'S','-')
WHERE Barcode LIKE 'Z%B%S%'
*/
3. Last, return the original 'B'
/*
UPDATE TB_BarcodeTag2
SET Barcode = STUFF(Barcode, LEN(Barcode),1, 'B')
WHERE Barcode LIKE 'Z%B%S%' AND Barcode like '%&'
*/