我有一个文本字段,我需要从中提取某些数字。该数字总是7位数字,但字符串中的位置是未知的,字符串中的数字也是未知的。
样品串是“SF WO 1564892 DUE 5/19 FIN WO 1638964 DUE 5/27”。我希望能够提取1564892和1638964,并生成一个新的字符串,如“1564892; 1638964”,如果字符串中有更多,则继续添加“; number”。我使用新字符串来查找并返回这些数字中最大的一个。
我找到了这个并且它有点工作,但它也会从字符串“123456789”返回“1234567”,这是不受欢迎的。
Public Function ExtractDigits(Alphanumeric As String, DigitLength As Long)
Dim StringLenght As Long
Dim CurrentCharacter As String
Dim NewString As String
Dim NumberCounter As Long
Dim TempString As String
StringLenght = Len(Alphanumeric)
For r = 1 To StringLenght
CurrentCharacter = Mid(Alphanumeric, r, 1)
If IsNumeric(CurrentCharacter) Then
NumberCounter = NumberCounter + 1
TempString = TempString & CurrentCharacter
If NumberCounter = DigitLength Then
If NewString = "" Then
NewString = TempString
Else
NewString = NewString & ";" & TempString
End If
End If
End If
If Not IsNumeric(CurrentCharacter) Then
NumberCounter = 0
TempString = ""
End If
Next
ExtractDigits = NewString
End Function
我希望解决方案是在VBA而不是功能,但我对任何事情持开放态度。
答案 0 :(得分:5)
使用using System.ComponentModel.DataAnnotations;
public class Dog
{
[Key]
public long Id { get; set; }
public int? Age { get; set; }
public string Name { get; set; }
public float? Weight { get; set; }
}
可以实现您想要的效果,但由于我正在走出去,所以这里是一个非常简单的替代:)
RegEx
修改强>
<强>逻辑强>
答案 1 :(得分:2)
你可以使用Regex,它比循环整个字符串容易得多。
正在使用的正则表达式是\b\d{7}\b
,这意味着由单词边界分隔的7位数字。
Public Function ExtractDigits(Alphanumeric As String, DigitLength As Long) As String
Dim regEx As Object, matches As Object
Dim i As Long
Dim output As String
Set regEx = CreateObject("VBScript.RegExp")
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.pattern = "\b\d{" & DigitLength & "}\b"
End With
Set matches = regEx.Execute(Alphanumeric)
For i = 0 To matches.Count - 1
output = output & matches(i) & ";"
Next
If Len(output) > 0 Then output = Left(output, Len(output) - 1)
ExtractDigits = output
End Function
答案 2 :(得分:1)
你的问题是否可以通过添加一个额外的If语句来解决,该语句测试第7个数字后面的字符是否也是一个数字,如果是这样则忽略该数字?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<h1 id="heading" style="position:absolute;">Watch the moving heading!</h1>
答案 3 :(得分:1)
我过去遇到过这样的事情,并希望这种方法有所帮助。
app.controller('myCtrl', function($scope, factoryResource) {
$scope.resource = factoryResource.getResource('http://localhost:8080/api/v1/projects');
$scope.resource.save(object, successCallback, errorCallback); //post
$scope.resource.query(successCallback, errorCallback); //get all
$scope.resource.get({id: object.id}, successCallback, errorCallback); //get a specific object
$scope.resource.delete({id: object.id}, successCallback, errorCallback); //delete
}
最佳。