我有一个excel文件,其字符串不能超过60个字符。有些字符串受<br>
的限制,而另一些则使用<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或Notepad++突出显示超过60个字符的标签之间的字符串,有什么“简单”的方法吗?
谢谢!
发布于 2014-07-23 02:01:19
由于您用regex和excel标记它,下面是一个VBA宏,它使用正则表达式突出显示单元格中的长短语。我以为你上面的例子都在一个牢房里。超过60个字符的每个子字符串将以红色或绿色突出显示(交替)。宏在选择的单元格上运行,选择。可以对其进行修改以在其他范围上运行。
编辑代码更改为只突出显示标记之间字符串的部分。在高亮显示开始标记之前
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
我不知道Notepad++,但我想这个正则表达式也是一样的
发布于 2014-07-22 05:25:05
在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 https://dl.dropboxusercontent.com/spa/ymse6uo5hhtvqry/vba.gif集成的记录。
假设长文本在B3:B8范围内,如果长度超过60个字符
标记,该文本将显示在列B旁边的列中。
发布于 2014-07-22 05:34:09
For Notepad++恐怕我找不到一种否定符号组合的方法。你不能用:
^(<br>|<break>)
所以我能想到的第二件事就是做这样的事:
.{60}(<br>|<break>)
但是,这只会突出显示这一行,如果它最终以br/break结尾,但在中断之前它还有60个其他字符。如果在结尾没有中断,则行将不会突出显示。
您也可以检查\n这是否足够好:
.{60}(<br>|<break>|\n)
要突出显示只需点击Ctrl+F,切换到Mark选项卡,将搜索模式设置为Regex并点击Mark (不要忘记清除以前的标记)
这是我在Notepad++中能想到的最好的选择,而且它只需要很少的努力。
https://stackoverflow.com/questions/24884070
复制