Swift从字符串中移除控制字符

2admgd59  于 2023-04-19  发布在  Swift
关注(0)|答案(5)|浏览(157)

我有一个Swift应用程序正在扫描条形码。条形码有时会在开头包含一个不可见的控制字符:\u{1D}
我使用这个方法从字符串中剥离值,但我正在寻找更健壮的东西,以防出现其他控制字符或在字符串中而不是在开头。

if(articleFilter.hasPrefix("\u{1D}")){
    let stringSize = articleFilter.count - 6
    finalArticleCode = String(articleFilter.suffix(stringSize))
}
drnojrws

drnojrws1#

可以使用扩展名过滤除数字以外的其他字符。

extension String {

  func filterNonNumeric() -> String {
    return self.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
  }
}
var str = "\u{1D}01000000000010"
self.sampleLabel.text = str.filterNonNumeric()

结果将是:

ht4b089n

ht4b089n2#

删除开头和结尾的字符称为 trimming。控制字符为:
https://developer.apple.com/documentation/foundation/nscharacterset/1416371-controlcharacters
就像这样

let articleFilterNew = articleFilter.trimmingCharacters(in: .controlCharacters)
kh212irz

kh212irz3#

也许你可以使用替换字符串协议

articleFilter = articleFilter.replacingOccurrences(of: "\u{1D}", with: "")

我想这会解决你的问题。

qco9c6ql

qco9c6ql4#

这是非常简单的使用修剪字符

var str =  "\u{1D}01000000000010"

let filteredOne = str.trimmingCharacters(in: .controlCharacters)
pvabu6sv

pvabu6sv5#

对于ObjectiveC,我使用了下面的代码,它工作正常

-(NSString *)normalizeText:(NSString *)text {
    NSString *normalizedText = [[text componentsSeparatedByCharactersInSet:NSCharacterSet.controlCharacterSet] componentsJoinedByString:@""];
    NSLog (@"Result: %@", normalizedText);
    
    return normalizedText;
}

对于Swift,它类似于

func normalizeText(text: String) -> String {
return text.components(separatedBy: .controlCharacters).joined()
}

相关问题