Board logo

標題: 取代雙引號內的字串 [打印本頁]

作者: VANESSA    時間: 2015-12-4 15:40     標題: 取代雙引號內的字串

請問我有一堆字串,我要從字串中,找出有雙引號"  ",雙引號內有空白文字要取代成_(底線),但是不在雙引號的空白就不用取代,EX
"123ASD DSA321"要變成"123ASD_DSA321" 但是若空白不在雙引號內,就不取代,EX


123ASD DSA321還是維持 123ASD DSA321

請問這可以用EXCEL解決嗎?
作者: 准提部林    時間: 2015-12-4 16:13

本帖最後由 准提部林 於 2015-12-4 16:14 編輯

一個字串中有幾組雙引號?
也許最好多提供些例子!

先以一組雙引號為例:
=LOOKUP("龥",IF({1,0},A1&"",REPLACE(A1,FIND(" ",A1,SEARCH("""* *""",A1)),1,"_")))

=IF(ISERR(SEARCH("""* *""",A1)),A1&"",REPLACE(A1,FIND(" ",A1,SEARCH("""* *""",A1)),1,"_"))
作者: hcm19522    時間: 2015-12-5 15:54

http://blog.xuite.net/hcm19522/twblog/362710895
作者: ML089    時間: 2015-12-6 10:48

=IF(LEFT(A1)&RIGHT(A1)="""""",SUBSTITUTE(A1," ","_"),A1)
作者: VANESSA    時間: 2015-12-9 11:37

謝謝各位高手,但是我的案例是一組字串有多個" ",而且要第1個"要和第2個" 配成一組,第3個"和第4個"
配成一組,所以第2個"和第3個"之間的空白要維持,
附上例子
set address "Trust" "172.22.112.113/32 Apple TV" 172.22.112.113 255.255.255.255  "Tel 2245 U7A4"
要變成
set address "Trust" "172.22.112.113/32_Apple_TV" 172.22.112.113 255.255.255.255  "Tel_2245_U7A4"
作者: 准提部林    時間: 2015-12-9 17:27

本帖最後由 准提部林 於 2015-12-10 13:27 編輯

雙引號組數有多組, 文字字元數不固定, 可考慮自訂函數:
Function Replace_Space(xStr$) As String
Dim i%, N%, K%, T$, TT$
For i = 1 To Len(xStr)
  T = Mid(xStr, i, 1)
  '_逐一取出字串的字元 
  If T = """" Then N = 1 - N:  K = 0 
  '_T若為雙引號,N值轉換成1或0_當N=0,1-0=1_當N=1,1-1=0_K歸零 
  If N = 1 And K = 0 Then K = InStr(i + 1, xStr, """")
  '_當N=1,表示是每對雙引號的〔第1個〕,再去檢查其後是否有另一個雙引號可配對,若有,則K>0  
  If K > 0 And T = " " Then T = "_" 
  '_當K>0,表示〔空白格〕仍在雙引號範圍中,取代為"_",直至再遇到下一個雙引號為結束,N及K返回0 
  TT = TT & T
Next i
Replace_Space = TT
End Function


公式:=Replace_Space(A1) 
作者: VANESSA    時間: 2015-12-10 12:59

謝謝版主,解決我的問題了
可以再請教
           T = Mid(xStr, i, 1)
  If T = """" Then N = 1 - N:  K = 0
  If N = 1 And K = 0 Then K = InStr(i + 1, xStr, """")
  If K > 0 And T = " " Then T = "_"
  TT = TT & T
這段的意思嗎?謝謝
作者: 准提部林    時間: 2015-12-10 13:29

回復 7# VANESSA


樓上已加入註解,邏輯很簡單,但須花些時間去理解!
作者: VANESSA    時間: 2015-12-10 13:32

謝謝謝謝,感激不盡
作者: 准提部林    時間: 2015-12-10 16:39

If N = 1 And K = 0 Then K = InStr(i + 1, xStr, """")

改成如下,可提示雙引號無配對:
If N = 1 And K = 0 Then
  K = InStr(i + 1, xStr, """")
  If K = 0 Then TT = "雙引號無法配對, 請檢查!": Exit For
End If




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)