等于不工作VB.Net

时间:2015-10-04 17:06:05

标签: vb.net

我试图比较两个我知道彼此相等的字符串,但总是跳到其他字符串。我已经尝试了所有的东西,.Equals,=,IsNot,它们都不起作用!令人沮丧的是我知道弦乐是平等的!请查看我的代码,看看它是否有任何问题。

Public Class Form1
    Dim log As String
    WithEvents xworker As New System.ComponentModel.BackgroundWorker

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    xworker.RunWorkerAsync()
End Sub

Private Sub xWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles xworker.DoWork
    Dim qWorker = CType(sender, System.ComponentModel.BackgroundWorker)
    Dim client As New Net.WebClient
    log = client.DownloadString("http://########/log.txt")
End Sub

Private Sub xWorker_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles xworker.RunWorkerCompleted
    If log.Equals(RichTextBox1.Text) Then
        xworker.RunWorkerAsync()
    Else
        RichTextBox1.Text = log
        xworker.RunWorkerAsync()
    End If
End Sub
End Class

4 个答案:

答案 0 :(得分:1)

你需要听@SLaks和@Hans Passant,他们是对的。

我设置了您的代码示例,如果源log.txt文件中没有行终止符,它就能正常工作。一旦我添加了行终止符,我就得到了你得到的结果。

从命令窗口:

>? RichTextBox1.Text.Length
14
>? log.length
15

使用QuickWatch窗口,并选择TABing直到选择Value字段:

记录结果:

"log test 1234" & vbCrLf & ""

RichTextBox结果:

"log test 1234" & vbLf & ""

问题的解决方法取决于实际写入log.txt文件的内容。我假设"记录测试1234"只是开发代码。如果您只对一行作为结果代码感兴趣,那么请确保您没有编写行终止符。如果您的结果代码更复杂,那么您需要对结果进行更多解析,而不仅仅是等于比较。

答案 1 :(得分:0)

试试这个。

如果是log.ToLower()。Trim()= RichTextBox1.Text.ToLower()。Trim()那么

答案 2 :(得分:0)

我认为这是一个比较敏感的案例。您应该将两个字符串转换为高或低,然后比较它们

    #include < stdio.h > 
    #include < stdlib.h > 
    #include < string.h >


    typedef struct {
        char * nombre;
        char * editorial;
        int valor;
        int area;
        int vendido;
    }
Libro;

int conteo(FILE * _entrada);
void datos(FILE * _entrada, Libro * _trabajo, int cantidad);
void menor(FILE * _entrada, FILE * _salida, Libro * _trabajo, int cantidad);

int main() {
    FILE * entrada;
    char ingreso[256];
    printf("Direccion del archivo de entrada \n");
    scanf("%255s", ingreso);
    entrada = fopen(ingreso, "r");
    if (entrada == NULL) {
        printf("No se pudo acceder al archivo de entrada \n");
        exit(1);
    }
    FILE * salida;
    char final[256];
    printf("Direccion del archivo de salida \n");
    scanf("%255s", final);
    salida = fopen(final, "r");
    if (salida == NULL) {
        printf("No se pudo acceder al archivo de salida \n");
        exit(1);
    }
    int cantidad = conteo(entrada);
    Libro * trabajo;
    trabajo = (Libro * ) malloc(sizeof(Libro) * cantidad);
    datos(entrada, trabajo, cantidad);
    menor(entrada, salida, trabajo, cantidad);
    return 0;
}

int conteo(FILE * _entrada) {
    char auxiliar1[100];
    int conteo = 0;
    while (!feof(_entrada)) {
        fgets(auxiliar1, 100, _entrada);
        conteo++;
    }
    rewind(_entrada);
    return (conteo / 5);
}

void datos(FILE * _entrada, Libro * _trabajo, int cantidad) {
    char auxiliar2[100];
    char * token;
    while (!feof(_entrada)) {
        fgets(auxiliar2, 100, _entrada);
        token = strtok(auxiliar2, ":");
        token = strtok(NULL, ":");
        (_trabajo - > nombre) = strdup(strtok(token, "\n"));

        fgets(auxiliar2, 100, _entrada);
        token = strtok(auxiliar2, ":");
        token = strtok(NULL, ":");
        (_trabajo - > editorial) = strdup(strtok(token, "\n"));

        fgets(auxiliar2, 100, _entrada);
        token = strtok(auxiliar2, ":");
        (_trabajo - > valor) = atoi(strtok(NULL, ":"));

        fgets(auxiliar2, 100, _entrada);
        token = strtok(auxiliar2, ":");
        (_trabajo - > area) = atoi(strtok(NULL, ":"));

        fgets(auxiliar2, 100, _entrada);
        token = strtok(auxiliar2, ":");
        (_trabajo - > vendido) = atoi(strtok(NULL, ":"));
    }
}




void menor(FILE * _entrada, FILE * _salida, Libro * _trabajo, int cantidad) {
    int i;
    int menor = 0;
    int posicion = 0;
    for (i = 0; i < cantidad; i++) {
        if ((_trabajo - > area) == 1) {
            menor = (_trabajo - > vendido);
            _trabajo++;
        }
    }
    _trabajo--;
    fprintf(_salida, "%s", (_trabajo - > nombre));
}

或者您可以使用String.Compare方法并将第三个param设置为true以忽略大小写

If Log.ToLower() = RichTextBox1.Text.ToLower() Then

答案 3 :(得分:0)

我已经读过RichTextBox可以在设置Text时更改行结尾。因此Text属性可能返回的字符串与设置的字符串不同。我无法验证,但你可能会对这个理论进行快速测试。