我试图比较两个我知道彼此相等的字符串,但总是跳到其他字符串。我已经尝试了所有的东西,.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
答案 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属性可能返回的字符串与设置的字符串不同。我无法验证,但你可能会对这个理论进行快速测试。