大佬教程收集整理的这篇文章主要介绍了删除字符串直到识别出字符,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试删除部分字符串(前 10 个字符),以便获得字符串的序列代码,而无需任何额外的字符。现在,串行代码将始终在 ":" 冒号字符之后开始。那么有没有办法指定从“:”和之前删除字符串,以便只有剩余的字符串是序列键?
例如; 字符串是“Myserials:12e42-23w6z-23w-a23”
最终字符串必须是“12e42-23w6z-23w-a23”
我正在手动删除字符串;
public String myStr; public voID Start () { myStr = myStr.SubString (10,myStr.Length - 10); DeBUG.Log (myStr); }
@H_489_13@解决方法
我会像这样使用字符串拆分函数:
#include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #include "Wire.h" #include "math.h" #include <SPI.h> #include <SD.h> File myFile; MPU6050 mpu; #define DEBUG #ifdef DEBUG //#define DPRINT(args...) serial.print(args) //OR use the following syntax: #define DPRINTSTIMER(t) for (static unsigned long SpamTimer; (unsigned long)(millis() - SpamTimer) >= (t); SpamTimer = millis()) #define DPRINTSFN(StrSize,Name,...) \ { \ charS[StrSize]; \ serial.print("\t"); \ serial.print(Name); \ serial.print(" "); \ serial.print(dtostrf((float)__VA_ARGS__,S)); \ } //StringSize,Variable,Spaces,Percision #define DPRINTLN(...) serial.println(__VA_ARGS__) #else #define DPRINTSTIMER(t) if (false) #define DPRINTSFN(...) //blank line #define DPRINTLN(...) //blank line #define PI 3.1415926535897932384626433832795 #endif #define LED_PIN 13 // // supply your own gyro offsets here,scaled for min sensitivity use MPU6050_calibration.ino // -4232 -706 1729 173 -94 37 // XA YA ZA XG YG ZG //int MPUOffsets[6] = { -4232,-706,1729,173,-94,37}; int MPUOffsets[6] = {436,-1485,914,47,-24,-28}; //{413,-1423,907,51,-38,-35} int led = 13; // LED on arduino int digitalPin = 7; // linear Hall magnetic sensor digital interface int analogPin = A0; // linear Hall magnetic sensor analog interface int digitalVal; // digital readings int analogVal; // analog readings int count = 0; float @R_823_6674@; int a = 0,def = 0,def2 = 0; float b = 0,dist = 0,pres_dist = 0,prec_dist = 0,x = 0,m = 0; float angle = 0; // ================================================================ // === i2c SETUP Items === // ================================================================ void i2cSetup() { // join I2C bus (I2Cdev library doesn't do this automatically) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz) #elif I2CDEV_IMPLEMENTATION == I2CDEv_bUILTin_FASTWIRE Fastwire::setup(400,truE); #endif } // ================================================================ // === INTERRUPT DETECTION RoutINE === // ================================================================ volatile bool mpuInterrupt = false; // inDicates whether MPU interrupt pin has gone high void dmPDAtaReady() { mpuInterrupt = true; } // ================================================================ // === MPU DMP SETUP === // ================================================================ int FifoAlive = 0; // tests if thE interrupt is triggering int IsAlive = -20; // counts interrupt start at -20 to get 20+ good values before assuming connected // MPU control/status vars uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU uint8_t devStatus; // return status after each device operation (0 = success,!0 = error) uint16_t packetSize; // expected DMP packet size (default is 42 bytes) uint16_t fifoCount; // count of all bytes currently in FIFO uint8_t fifoBuffer[64]; // FIFO storage buffer // orientation/motion vars Quaternion q; // [w,x,y,z] quaternion container VectorInt16 aa; // [x,z] accel sensor measurements VectorInt16 aaReal; // [x,z] gravity-free accel sensor measurements VectorInt16 aaWorld; // [x,z] world-frame accel sensor measurements VectorFloat gravity; // [x,z] gravity vector float euler[3]; // [psi,theta,phi] Euler angle container float ypr[3]; // [yaw,pitch,roll] yaw/pitch/roll container and gravity vector byte StartUP = 100; // lets get 100 readings from the MPU before we start trusTing them (Bot is not trying to balance at this point it is just starTing up.) void MPU6050Connect() { static int MPUInitCntr = 0; // initialize device mpu.initialize(); // same // load and configure the DMP devStatus = mpu.dmpInitialize(); // same if (devStatus != 0) { // ERROR! // 1 = initial memory load failed // 2 = DMP configuration updates failed // (if it's going to break,usually the code will be 1) char *StatStr[5]{"No Error","initial memory load failed","DMP configuration updates failed","3","4"}; MPUInitCntr++; serial.print(F("MPU connection Try #")); serial.println(MPUInitCntr); serial.print(F("DMP Initialization failed (code ")); serial.print(StatStr[devStatus]); serial.println(F(")")); if (MPUInitCntr >= 10) return; //only try 10 times delay(10); MPU6050Connect(); // Lets try again return; } mpu.setXAccelOffset(MPUOffsets[0]); mpu.setYAccelOffset(MPUOffsets[1]); mpu.setZAccelOffset(MPUOffsets[2]); mpu.setXGyroOffset(MPUOffsets[3]); mpu.setYGyroOffset(MPUOffsets[4]); mpu.setZGyroOffset(MPUOffsets[5]); serial.println(F("Enabling DMP...")); mpu.setDMPEnabled(true); // enable Arduino interrupt detection serial.println(F("Enabling interrupt detection (Arduino external interrupt pin 2 on the Uno)...")); serial.print("mpu.geTinterruptDrive= "); serial.println(mpu.geTinterruptDrive()); attachInterrupt(0,dmPDAtaReady,RISING); //pin 2 on the Uno mpuIntStatus = mpu.geTintStatus(); // Same // get expected DMP packet size for later comparison packetSize = mpu.dmpGetFIFOPacketSize(); delay(2000); // Let it Stabalize mpu.resetFIFO(); // Clear fifo buffer mpu.geTintStatus(); mpuInterrupt = false; // wait for next interrupt } // ================================================================ // === MPU DMP Get Data === // ================================================================ void GetDMP() { // Best version I have made so far // serial.println(F("FIFO interrupt at:")); // serial.println(micros()); static unsigned long LastGoodPacketTime; mpuInterrupt = false; FifoAlive = 1; fifoCount = mpu.getFIFOCount(); if ((!fifoCount) || (fifoCount % packetSizE)) { // we have failed Reset and wait till next time! digitalWrite(LED_PIN,LOW); // lets turn off the blinking light so we can see we are failing. mpu.resetFIFO(); // clear the buffer and start overmpu.resetFIFO(); } else { while (fifoCount >= packetSizE) { // Get the packets until we have the latest! mpu.getFIFOBytes(fifoBuffer,packetSizE); // lets do the magic and get the data fifoCount -= packetSize; } LastGoodPacketTime = millis(); MPUMath(); // <<<<<<<<<<<<<<<<<<<<<<<<<<<< On success MPUMath() <<<<<<<<<<<<<<<<<<< digitalWrite(LED_PIN,!digitalRead(LED_PIN)); // Blink the Light } } // ================================================================ // === MPU Math === // ================================================================ float Yaw,Pitch,Roll; void MPUMath() { mpu.dmpGetQuaternion(&q,fifoBuffer); mpu.dmpGetGravity(&gravity,&q); mpu.dmpGetYawPitchRoll(ypr,&q,&gravity); Yaw = -(ypr[0] * 180.0 / M_PI); Pitch = (ypr[1] * 180.0 / M_PI); Roll = (ypr[2] * 180.0 / M_PI); def2 = b - Yaw; if (def2 > 340 || def2 < -340) { Yaw = Yaw; } else if (def2 > 10 || def2 < -10) { Yaw = b; } // DPRINTSTIMER(150) { // serial.print(Yaw); // DPRINTSFN(15,"\tYaw:",Yaw,6,1); // DPRINTSFN(15,"\tPitch:","\tRoll:",Roll,1); // DPRINTLN(); // } } // ================================================================ // === Setup === // ================================================================ void setup() { pinMode(led,OUTPUT); pinMode(digitalPin,INPUT); serial.begin(115200); //115200,115200,57600 while (!serial) ; serial.print("Initializing SD card..."); if (!SD.begin(10)) { serial.println("initialization failed!"); while (1) ; } serial.println("initialization done."); serial.println("i2cSetup"); i2cSetup(); serial.println("MPU6050Connect"); MPU6050Connect(); serial.println("Setup complete"); pinMode(LED_PIN,OUTPUT); } // ================================================================ // === Loop === // ================================================================ void loop() { myFile = SD.open("t21.txt",FILE_WRITE); if (myFilE) { serial.print("WriTing to test.txt..."); // myFile.println("This is a test file :)"); for (int i = 0; i < 100; i++) { if (mpuInterrupt) { // wait for MPU interrupt or extra packet(s) available GetDMP(); } analogVal = analogRead(analogPin); def = analogVal - a; if (def < -20) { count++; } pres_dist = count; dist = pres_dist - prec_dist; prec_dist = pres_dist; dist = dist * 0.35; a = analogVal; b = Yaw; serial.println(i); angle = Yaw * PI / 180; x = x + dist * cos(anglE); m = m + dist * sin(anglE); @R_823_6674@ = millis(); myFile.print(X); myFile.print("\t"); myFile.print(m); myFile.print("\t"); myFile.println(@R_823_6674@ / 1000); delay(20); } myFile.close(); serial.println("done."); serial.println("End"); } else { serial.println("error opening test.txt"); } serial.print(X); serial.print("\t"); serial.print(m); serial.print("\t"); serial.print(@R_823_6674@ / 1000); serial.print("\t"); serial.println(Yaw); }
@H_489_13@ ,您可以查找第一次出现的 ':' 并直接获得结果,而不是拆分字符串:
var input = "Myserials:12e42-23w6z-23w-a23"; var result = input.SubString(input.IndexOf(':') + 1);
@H_489_13@大佬总结
以上是大佬教程为你收集整理的删除字符串直到识别出字符全部内容,希望文章能够帮你解决删除字符串直到识别出字符所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。